简体   繁体   English

集合中的排序值仅在循环中可见

[英]Sorted values in a collection only visible within a loop

I have the following code that groups and sorts values within the anonymous collection. 我有以下代码对匿名集合中的值进行分组和排序。 When I am in a sorting loop I see that values are correctly sorted. 当我处于排序循环中时,我看到值已正确排序。 After the loop, they are still in unsorted places ..... why? 循环之后,它们仍然在未分类的地方.....为什么?

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)));               
}

why? 为什么?

Because the groups is an enumerable sequence and not a collection. 因为groups是可枚举的序列,而不是集合。 Call ToList() or ToArray() on it before you iterate over it: 在对其进行迭代之前,请对其调用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM