gpt4 book ai didi

c# - 如何在Linq语句中转换并赋值正确

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:37 32 4
gpt4 key购买 nike

我一直在尝试以基于表达式的方式编写以下代码,但不确定如何在比较后对对象进行赋值。任何帮助将不胜感激。

var pcs = from a in collection
group a by a.TotType
into g
select new
{
TType = g.Key,
SColl = g.Select(r => r)
};

for (int i = 0; i < processResult.PAndLReport.BreakdownTotTypeCollection.Count; i++)
{
foreach (var ttypes in pcs)
{
if (processResult.PAndLReport.BreakdownTotTypeCollection[i].TotType == ttypes.TType)
{
BreakdownCollection coll = new BreakdownCollection();
foreach (var item1 in ttypes.SColl)
{
coll.Add(item1);
}

processResult.PAndLReport.BreakdownTotTypeCollection[i].BreakdownCollection = coll;
}
}
}

最佳答案

所以 - 代码可以工作,但是非常冗长。

这是减少代码的尝试。我做了一些假设(此代码与其他代码的分配不完全相同),但它可能接近您想要的。

var pcs = collection.ToLookup(a => a.TotType);

foreach(var bttcoll in processResult
.PAndLReport
.BreakdownTotTypeCollection)
{
var items = pcs[bttcoll.ToTType];
//do you have a constructor that takes an IEnumerable<Item> ?
bttcoll.BreakdownCollection = new BreakdownCollection(items)
}

通常,您应该避免在 linq 查询中更改对象状态。 Linq 来自函数式编程的思维模式,其中状态永远不会改变(相反,新对象是用所需的状态创建的)。

关于c# - 如何在Linq语句中转换并赋值正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2240018/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com