【问题标题】:What is the C# extension methods equivalent for this Linq query?与此 Linq 查询等效的 C# 扩展方法是什么?
【发布时间】:2010-11-22 22:58:37
【问题描述】:

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 子句有点神秘,我不知道如何从Select 中获取Key

【问题讨论】:

  • 我认为您的意思是使用“扩展方法”的方法?

标签: c# linq group-by extension-methods


【解决方案1】:

GroupBy 返回 IEnumerable<T><IGrouping<TKey, TSource>。有了这个,您可以执行第二个 Select 操作,它返回的值与上面完全相同:

var numberGroups = numbers.GroupBy(n => n % 5)
                          .Select(g => new { Remainder = g.Key, Numbers = g });

【讨论】:

    【解决方案2】:
    numbers.GroupBy(n => n % 5).Select(g => new { Remainder = g.Key, Numbers = g });
    

    【讨论】:

      猜你喜欢
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-25
      相关资源
      最近更新 更多