这是两个C#类......
public class Address
{
public string Country;
public string City;
}
public class Traveller
{
public string Name;
public List<Address> TravelRoute;
}
Run Code Online (Sandbox Code Playgroud)
......和一份数据清单(填写在某处)......
List<Traveller> Travellers;
Run Code Online (Sandbox Code Playgroud)
...然后这个LINQ查询:
var result = from t in Travellers
where t.TravelRoute.Any(a => a.Country == "F")
select t;
foreach (var t in result)
System.Console.WriteLine(t.Name);
Run Code Online (Sandbox Code Playgroud)
我不明白查询:什么意味着"任何"功能和"=>"运算符做什么?
有人能解释一下这段代码中发生了什么吗?谢谢!
它选择TravelRoute包含国家"F"的所有旅行者.
该Any
如果列表中的任何物体的满足是在传递给函数的条件函数返回true.从方法签名中,您可以看到它需要一个Func<>
返回a 的委托bool
.这意味着它需要任何返回布尔值的方法,包括提供的lambda表达式.
这不同于Where
,它将根据传入的条件进行过滤.
=>是一个lambda表达式.在这种特殊情况下,它是编写匿名委托的快捷方式.
线路
a => a.Country == "F"
如果它是一个单独的 LINQ 语句,则将转换为类似以下内容:
来自 t.TravelRoute 中的地址 其中 a.Country = "F" 选择一个
任何意思是:任何。换句话说,如果 TravelRoute 中的任何对象的 Country 属性为“F”,它将返回 true
希望有帮助