C# 使用LINQ将中间值添加到列表中
我有一个linq:C# 使用LINQ将中间值添加到列表中,c#,linq,C#,Linq,我有一个linq: listA包含Id、DateValueId和Value List<int> valueIds=new List<int>(); //valueIds contains the intermediate values of value ids from x by listA group x by new {Id=x.Id, Date=x.date} into g let sum= g.Sum(x=>!valueIds.Contains(x
listA
包含Id
、Date
ValueId
和Value
List<int> valueIds=new List<int>();
//valueIds contains the intermediate values of value ids
from x by listA
group x by new {Id=x.Id, Date=x.date}
into g
let sum= g.Sum(x=>!valueIds.Contains(x.ValueId):x.Value:0)
//I don't want to sum it if the valueIds are already added for sum
select {
Id =x.Id
Value=sum
}
这是否可以用一个
linq
语句而不是foreach来实现呢?您的linq并没有太多关于您拥有什么和想要什么的描述。你能用语言描述一下吗?你想要实现什么?结果应该是什么样的?这对我来说没有意义。您希望如何填充valueIds
中的中间值?@Enigmativity正是如此。我想知道这是否可能。就像使用聚合函数一样。@ZammyPage-你说的“准确”是什么意思?你是说你和我一样困惑吗?我的意思是如何在valuesIds
buddy中填充中间值?
List<int> valueIds=new List<int>();
List<SomeClass> listB=new List<SomeClass>();
foreach (var x by listA.GroupBy(new {Id=x.Id, Date=x.date}))
{
var sum= g.Sum(x=>!valueIds.Contains(x.ValueId):x.Value:0)
valueIds.Add(x.ValueId)
listB.Add(new SomeClass{Id=x.Id, Value=sum)});
}