我无法解释以下陈述:
var myResults = new List<bool>();
myResults.Add(this.myWorkers.All(c => other.Workers.Any(cc => c.Equals(cc))));
我看了this article,分别解释了Any和All。但是我不太清楚如何解释嵌套的LINQ。
答案 0 :(得分:2)
this.myWorkers.All(c => other.Workers.Any(cc => c.Equals(cc)))
集合中的每个对象都显示在true
myWorkers
的{{1}}集合中,则 Workers
会返回other
。
你可以用循环重写这个表达式:
bool All = true;
foreach (var c in this.myWorkers)
{
bool Any = false;
foreach (var cc in other.Workers)
if (c.Equals(cc))
{
Any = true;
break;
}
if (!Any)
{
All = false;
break;
}
}
myResults.Add(All);
答案 1 :(得分:1)
在列表myResults
中添加一个布尔值,指示myWorkers
集合中的每个项目是否与other.Workers
集合中的任何项目相同。
可以在没有LINQ的情况下重写相同的代码:
var myResults = new List<bool>();
bool all = true;
foreach (var c in myWorkers)
{
bool any = false;
foreach (var cc in other.Workers)
{
if (c.Equals(cc))
{
any = true;
break;
}
}
if (!any)
{
all = false;
break;
}
}
myResults.Add(all);
答案 2 :(得分:0)
这里我们使用方法语法(Lamda表达式)
Lamda表达与集合一起工作。
myResults.Add(this.myWorkers.All(c => other.Workers.Any(cc => c.Equals(cc))));
下面
将添加元素的添加()方法用于 myResults 集合。 All()方法用于遍历集合的所有元素。 用于匹配元素的任何()方法,如果找到任何匹配项,则使用条件,然后跳过其rremain元素。
如果集合中的任何元素与 cc
匹配,则表达式返回 true