嵌套的带有Remove方法的Forloop和使用LINQ的If条件
本文关键字:LINQ If 条件 Forloop Remove 方法 嵌套 | 更新日期: 2023-09-27 18:01:11
我想将下面的代码转换为LINQ或Lambda表达式。
for (int indexprod = 0; indexprod < tempProduct.Count; indexprod++)
{
for (int index = 0; index < tempProduct[indexprod].Prices.Count; index++)
{
if (tempProduct[indexprod].Prices[index].Term == null || tempProduct[indexprod].Prices[index].Term == 0)
{
tempProduct[indexprod].Prices.Remove(tempProduct[indexprod].Prices[index]);
index--;
}
}
if (tempProduct[indexprod].Prices.Count == 0)
{
tempProduct.Remove(tempProduct[indexprod]);
indexprod--;
}
}
我试着这样做:
List<Product> tempprod1= (from p in products
from pr in p.Prices
where pr.Term == 0
select p).ToList<Product>();
但无法找出如何在pr.Term时删除价格元素!0.
这里有:
tempProduct
.ForEach(p => p.Prices.RemoveAll(price => (price.Term ?? 0)==0 ))
.RemoveAll(p => p.Prices.Count == 0);
希望这能有所帮助。干杯
这样会不会不起作用,而且更简洁。。。
tempProduct.RemoveAll(p => p.Prices.Count == 0);
如果您想在Term=0的情况下删除price元素。以下是查询
tempProduct.ForEach(p=> p.Prices.Remove(p.Prices.ToList().ToList().Where(x => x.Term == 0).FirstOrDefault()));