【发布时间】:2016-04-27 23:25:41
【问题描述】:
我有以下 Linq 查询:
IEnumerable<Network> net = from file in Directory.GetFiles(folder+ @"\network")
from lines in File.ReadLines(file).Skip(1)
let row = lines.Split(',')
select new Network
{
networkname = getnetwork(row),
...
networkdate = getnetworkdate(row)
};
当我在它上面使用 toList() 时,列表是空的,但是当我使用 foreach 循环时,我使用一个空列表并添加每个项目,它不是。我是否在此查询中犯了错误,或者这种奇怪行为可能有不同的来源?
更新: 我在这样的扩展方法中使用它: 这不起作用:
public static void FillFromCsv(this List<Network> network)
{
[QUERY HERE]
network = net.toList();
}
这行得通:
public static void FillFromCsv(this List<Network> network)
{
[QUERY HERE]
network.Clear();
Foreach (Network n in net)
{
network.add(n);
}
}
【问题讨论】:
-
你能说明你如何使用
ToList和ForEach吗?你按什么顺序做这些有关系吗? -
这可能是由 Linq 延迟执行引起的,但我不确定。
-
@"\network" 的文件扩展名在哪里?
-
您似乎正在尝试使用 C# 解析 .CSV 文件。你想use a library吗?
-
您是否尝试通过遍历将每个项目添加到列表中的项目来创建自己的列表? var netList = new List
(); foreach(var n in net) netList.Add(n);