【发布时间】:2017-03-03 15:52:09
【问题描述】:
请对这种情况提供任何帮助.. c# 新手。
总结:
- 需要将 csv 的内容读入数组。
- 跳过数组的第一行,然后对第 1 列(公司)进行排序
- 然后在代码中进一步使用排序数组(如果更简单,可以不使用标题)。
示例 csv:
Company,Item,Vendor
Comp1,Bulb,BnQ
Comp2,Plug,Tesco
Comp1,Kettle,Wickes
这是我的尝试,但在尝试访问 sorted[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(',');
...
【问题讨论】:
-
很确定添加
.ToList()将起作用:.Select(x => x.Line).ToList();,否则您可以使用foreach而不是for:foreach (var line in sorted) { var line1 = line.ToString(); ... -
@Quantic 谢谢,我会试试看它是否适合我
-
你真的应该学会用谷歌搜索这些异常信息。在 Google 中直接输入
Cannot apply indexing with [] to an expression of type 'System.Collections.Generic.IEnumerable会告诉您如何修复它。 -
@DarrenYoung 很欣赏这些建议,尽管有点居高临下。这是我做的第一件事,但仍然未能找到解决方案 - 因此发布了这篇文章。