无法在选择linq方法中访问类的成员

本文关键字:访问 成员 方法 选择 linq | 更新日期: 2023-09-27 18:10:44

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方法中类的成员/字段。

谢谢

无法在选择linq方法中访问类的成员

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-group的所有名称集中,值求和。

试试这个

var x = t.GroupBy(gp => gp. name)。order (group => group. key)。选择(group => Tuple.Create(group))。键,group.Count ()));