我想将以下代码转换为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时删除price元素。
答案 0 :(得分:0)
这会不起作用并且更简洁......
tempProduct.RemoveAll(p => p.Prices.Count == 0);
答案 1 :(得分:0)
你有:
tempProduct
.ForEach(p => p.Prices.RemoveAll(price => (price.Term ?? 0)==0 ))
.RemoveAll(p => p.Prices.Count == 0);
希望这会有所帮助。干杯
答案 2 :(得分:0)
如果您想删除price元素,如果Term = 0。以下是查询
tempProduct.ForEach(p=> p.Prices.Remove(p.Prices.ToList().ToList().Where(x => x.Term == 0).FirstOrDefault()));