var coupon=" ";
foreach(var p in products)
{
var query = products.Where(b => b.getId() == p.getId()).ToList();
if (query != null)
{
foreach(var q in query)
{
coupon = q.getName();
Console.WriteLine(coupon);
}
}
}
谁能告诉我此代码块的lambda表达式是什么
答案 0 :(得分:3)
并非每个循环操作都适合于lambda表达。 Lambda表达式对于数据的 projections 很有用-即将其从一种形式转换为另一种形式-应用公式等,但是:这不是您在这里所做的。您正在对数据执行 (Console.WriteLine
。您可以在此处使用SelectMany
对LINQ进行某些操作,但是...变得更少可读,而不是更多。
您已经拥有的就好了。我唯一要做的更改是:
if (query != null)
测试-这永远不会是假的ToList()
-无需创建新的列表即可对其进行迭代coupon
p.getId()
所以:
foreach(var p in products)
{
var id = p.getID();
foreach(var q in products.Where(b => b.getId() == id))
{
var coupon = q.getName();
Console.WriteLine(coupon);
}
}
答案 1 :(得分:0)
您的代码块中有一个lambda expression,它是Where
的唯一参数,如下所示:
b => b.getId() == p.getId()
在此特定情况下,lambda有效地(emem)(尽管从技术上讲不是)是Predicate,它是一个用于测试某物是否为true
或false