我有一个像这样的linq循环:
foreach (var group in part.Profiles.Skip(ixstart).
GroupBy(b => new { b.Number, b.X }).
OrderBy(g => g.Key.Number).ThenBy(g => g.Key.X))
{
// .... code
}
在...代码对列表进行排序是否安全?
part.Profiles.Sort()
?
我没有例外。
答案 0 :(得分:1)
我怀疑它结果是安全的,因为GroupBy
不会传输结果 - 它会在返回任何值之前消耗输入的所有。 (它是 lazy ,因为它在你要求它的第一个元素之前不会做任何工作,但它会消耗所有的输入。)
但是,我肯定不依赖于此。它会给许多读者敲响警钟,看似无辜的改变可能会搞砸一切。我还说这是一个令人困惑的事情,在一个循环中对一个集合进行排序,该循环遍及该集合。选项:
ToList()
并使用结果)