代码之家  ›  专栏  ›  技术社区  ›  Robert Harvey

这个Linq查询的C扩展方法等价于什么?

  •  4
  • Robert Harvey  · 技术社区  · 15 年前

    this example:

    public void Linq40()
    {
        int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
    
        var numberGroups =
            from n in numbers
            group n by n % 5 into g
            select new { Remainder = g.Key, Numbers = g };
    
        foreach (var g in numberGroups)
        {
            Console.WriteLine("Numbers with a remainder of {0} when divided by 5:",
                g.Remainder);
    
            foreach (var n in g.Numbers)
            {
                Console.WriteLine(n);
            }
        }
    }
    

    什么是纯c#等价物?我明白了。。。

    var numberGroups = numbers.GroupBy(n => n % 5)...
    

    但是 into 条款有点神秘,我想不出怎么得到 Key Select .

    2 回复  |  直到 15 年前
        1
  •  8
  •   Robert Harvey    15 年前

    GroupBy 返回 IEnumerable<T> 属于 <IGrouping<TKey, TSource> . 通过此操作,您可以执行第二个选择操作,该操作返回与上面完全相同的值:

    var numberGroups = numbers.GroupBy(n => n % 5)
                              .Select(g => new { Remainder = g.Key, Numbers = g });
    
        2
  •  8
  •   BFree    15 年前
    numbers.GroupBy(n => n % 5).Select(g => new { Remainder = g.Key, Numbers = g });