[英]Not able to understand the functionality of ToLookup linq extension method
[英]Not able to understand LINQ extension methods
this.myWorkers.All(c => other.Workers.Any(cc => c.Equals(cc)))
如果myWorkers
集合中的每个对象都显示在other
Workers
集合中,则返回true
。
你可以用循环重写这个表达式:
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);
在列表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);
这里我们使用方法语法(Lamda表达式)
Lamda表达与收藏有关。
myResults.Add(this.myWorkers.All(c => other.Workers.Any(cc => c.Equals(cc))));
这里
Add()方法用于将add元素添加到myResults集合中。 All()方法用于遍历集合的所有元素。 任何()方法用于匹配元素与条件(如果找到任何匹配)然后其跳过rremain元素。
如果集合中的任何元素与cc匹配,则表达式返回true
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.