无法在select linq方法

时间:2015-09-01 10:34:14

标签: c# extension-methods

static void Main(){

List<Foo> t = new List<Foo>{
            new Foo(){Id=1,Name="A",Value=1},
            new Foo(){Id=2,Name="B",Value=1},
            new Foo(){Id=3,Name="C",Value=1},
            new Foo(){Id=3,Name="D",Value=1}};

var x = t.GroupBy(gp => gp.Id).Select(sel => new Foo {  Id = ,Name=,Value= });

}

public class Foo{
    public string Name { get; set; }
    public int Id { get; set; }
    public int Value { get; set; }
}

var x 中,我想按ID分组所有Foo对象,并在Value字段中获取SUM。

问题是我似乎无法在select方法中访问类的成员/字段。

由于

2 个答案:

答案 0 :(得分:3)

GroupBy之后,您不会选择IEnumerable<Foo>,而是选择它们的组。你可能想要:

var x = t.GroupBy(f => f.Id)
    .Select(grp => new Foo {  
        Id = grp.Key, 
        Name = String.Join(",", grp.Select(f => f.Name)),
        Value = grp.Sum(f => f.Value)
    });

我正在使用String.Join来概念每个ID组的所有名称,这些值是相加的。

答案 1 :(得分:0)

试试这种方式

var x = t.GroupBy(gp =&gt; gp.Name).OrderBy(group =&gt; group.Key).Select(group =&gt; Tuple.Create(group.Key,group.Count()) );