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方法中访问类的成员/字段。
由于
答案 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()) );