读取CSV文件,然后排序,然后再次使用数组

时间:2017-03-03 15:52:10

标签: c# arrays csv

有关此方案的任何帮助请... c#的新手。

要点:

  1. 需要将csv的内容读入数组。
  2. 跳过第一行数组,然后按第1列(公司)
  3. 排序
  4. 然后在代码中进一步使用有序数组(如果更简单,则不使用标题)。
  5. 示例csv:

     Company,Item,Vendor
     Comp1,Bulb,BnQ
     Comp2,Plug,Tesco
     Comp1,Kettle,Wickes
    

    这是我的尝试,但在尝试访问已排序的[j]时出现以下错误,我无法解决此问题。

    无法将带有[]的索引应用于类型为'System.Collections.Generic.IEnumerable

    的表达式

    代码:

    var csvRows = System.IO.File.ReadAllLines(filename).Skip(1);
    var sorted = csvRows.Select(line => new
                    {
                        SortKey = Int32.Parse(line.Split(',')[0]),
                        Line = line
                    })
                    .OrderBy(x => x.SortKey)
                    .Select(x => x.Line);
    
    int maxCount = sorted.Count();
    
    for (int j = 0; j < maxCount; j++)
    {
     string line1 = sorted[j].ToString();
     var values = line1.Split(',');
    ...
    

1 个答案:

答案 0 :(得分:2)

您需要在LINQ查询的末尾添加mydomain.com.ToList(),否则您的已排序变量是IEnumerable而不是列表或数组,因此您无法使用索引访问它。