[英]Sorted values in a collection only visible within a loop
我有以下代碼對匿名集合中的值進行分組和排序。 當我處於排序循環中時,我看到值已正確排序。 循環之后,它們仍然在未分類的地方.....為什么?
class Test
{
public Guid P1;
public int P2;
}
var Lista = new List<Test>();
Lista.Add(new Test() { P1 = Guid.Parse("D4651E83-67D6-4BCD-B28D-8173C5AE94F7"), P2 = 2 });
Lista.Add(new Test() { P1 = Guid.Parse("D4651E83-67D6-4BCD-B28D-8173C5AE94F7"), P2 = 1 });
Lista.Add(new Test() { P1 = Guid.Parse("310D74C4-0624-4B1C-9F4E-CB85924CB2B6"), P2 = 4 });
Lista.Add(new Test() { P1 = Guid.Parse("310D74C4-0624-4B1C-9F4E-CB85924CB2B6"), P2 = 3 });
var groups = from g in Lista
group g.P2 by g.P1 into g
select new { KeyGroup = g.Key, Rect = g.ToList() };
foreach (var x in groups)
{
x.Rect.Sort((a, b) => (a.CompareTo(b)));
}
為什么?
因為groups
是可枚舉的序列,而不是集合。 在對其進行迭代之前,請對其調用ToList()
或ToArray()
:
var groups = (from g in Lista
group g.P2 by g.P1 into g
select new { KeyGroup = g.Key, Rect = g.ToList() }).ToArray();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.