我試圖重新寫了使用LINQ以下轉換嵌套的foreach到LINQ
foreach (WMCommon.Services.StakeOut.assembly ass in assemblies)
{
foreach (var agg in aggregate)
{
if (agg.catagory.unitActn == ass.unitActn &&
agg.catagory.unitCode == ass.unitCode &&
agg.catagory.unitLength == ass.unitLength
)
{
ass.quantity = agg.qty;
}
}
}
這是據我得到:
assemblies.Where(a => a.quantity = (aggregate.Where(p => p.catagory.unitActn == a.unitActn && p.catagory.unitCode == a.unitCode && p.catagory.unitLength == a.unitLength).Select(s=>s.qty)));
感謝您的幫助提前。我希望LINQ比嵌套的FOREACH快得多?
不應該'a.quantity = ...'是'a.quantity == ...'嗎? –
當你想「更改/更新/分配某些東西」時,你不應該想到'LINQ'這就是爲什麼'Q'代表'Query'的原因。它幾乎用於查詢,選擇,過濾,排序...不是用於更改,更新,分配......雖然你可以做,但它與foreach非常相似,它也可能涉及使用「ForEach」靜態方法。 –
我非常懷疑它會更快。如果你正在尋找性能,只需添加一個休息時間;在內部的foreach循環內,就是這樣。 – Save