gpt4 book ai didi

c# csv 使用第三列对列表进行排序

转载 作者:行者123 更新时间:2023-11-30 15:51:21 25 4
gpt4 key购买 nike

我有一个程序可以使用 StreamReader 打开一个 CSV 文件,并创建一个包含 4 列和 4 行的表格,无论 CSV 文件中有多少行。这与创建以下输出一样正常工作:

Item Code, Item Description, Current Count, On Order

A0001, Toy Car, 4, Yes

A0002, Toy Truck, 1, No

我将 CSV 文件中的所有数据保存在一个全局列表中,而不拆分每一行。当我创建表格时,我使用“Split(',')”拆分行,这在当时按需要工作。但是我不确定如何使用 Current Count 列从最大到最小对整个列表重新排序。我尝试了以下方法,但它在 Split(',') 上给出了错误。

public static class Globals
{
public static List<string> items = new List<string>();
}
private void createTableWithOrder(int order)
{
for (int i = 0; i < Globals.items.; i++)
{
var values = Globals.items[i].Split(',');

if (order == 1)
{
values = Globals.items[i].OrderBy(itemDesc => itemDesc.Split(',')).ToList();
}
}
}

给出的错误如下:

'char' does not contain a definition for 'Split' and no extension method 'Split' accepting a first argument of type 'char' could be found (are you missing a using directive or an assembly reference?)

最佳答案

OrderBy 调用对 Globals.items[i] 中字符串中的所有字符 起作用。这就是您看到当前错误的原因。为了对整个集合进行排序,需要在整个列表上进行排序,例如:

var values = Globals.items.Select(line => line.Split(',')); // Select columns for all rows
var orderedListOfValues = values
.OrderByDescending(cols => int.TryParse(cols[2].Trim(), out var order) ? order : int.MaxValue); // Sort by count as an integer

请注意,在上面的示例中,对非数字值(例如标题)进行排序将使用整数的最大值。根据预期的结果,这些结果可以合并回字符串列表以供呈现:

var orderedItems = string.Join(",", orderedListOfValues)

干杯!

关于c# csv 使用第三列对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57447413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com