我有一个ObjectClass
类型的集合对象。我需要一个查询,它将返回Name
属性对象的分组列表。对于每个分组元素,相应的Value
属性应该包含所有元素的总和。该组中的Value
值 - 否则Value
应为唯一的单个元素保留相应的Value
值。 ObjectClass
类型如下所示。
public class ObjectClass
{
int Id;
string Name;
int Value;
}
让var list
属于List<ObjectClass>
类型,并假设其中包含项目。
我试过了:
var plas = list.GroupBy(p => p.Name).Select(g => new objectClass{
Value = g.sum(p.value),
Name = g.select(a=>a.Name).FirstOrDefault()
});
请指出正确的方向。
答案 0 :(得分:0)
我认为这就是你所需要的......虽然我建议以更清晰的方式提出问题并提供输入和期望/预期的输出。
void Main()
{
var someObjects = new List<ObjectClass>();
someObjects.Add(new ObjectClass(){Name="numberWang", Value = 2});
someObjects.Add(new ObjectClass(){Name="numberWang", Value = 3});
someObjects.Add(new ObjectClass(){Name="numberTwang", Value = 4});
someObjects.Add(new ObjectClass(){Name="numberTwang", Value = 5});
//You could filter this beforehand with a Where clause ie. someObjects.Where(i=>i.Name == "whatever").Sum(i=>i.Value)
int sumOfValuesOfAllObjects = someObjects.Sum(i=>i.Value);
var sumByObjectClassName = someObjects.GroupBy(a=>a.Name).Select(b=>
new ObjectClass() { Name = b.First().Name, Value =b.Sum(c=>c.Value) } );
}
public class ObjectClass
{
public string Name;
public int Value;
}
答案 1 :(得分:-1)
int i = 0;
List<ObjectClass> foo = new List<ObjectClass>();
foreach(var item in foo.Where(item => item.Name = filter))
{
i += item.Value;
}
旧但是金