这个LINQ查询有什么作用?

Sla*_*uma 5 c# linq

这是两个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)

我不明白查询:什么意味着"任何"功能和"=>"运算符做什么?

有人能解释一下这段代码中发生了什么吗?谢谢!

Ode*_*ded 7

它选择TravelRoute包含国家"F"的所有旅行者.

Any如果列表中的任何物体的满足是在传递给函数的条件函数返回true.从方法签名中,您可以看到它需要一个Func<>返回a 的委托bool.这意味着它需要任何返回布尔值的方法,包括提供的lambda表达式.

这不同于Where,它将根据传入的条件进行过滤.

=>是一个lambda表达式.在这种特殊情况下,它是编写匿名委托的快捷方式.

  • 值得指出的是,"Any"是"All"的对应物.当集合中的每个*元素满足条件(基本上是一个长的`和`语句字符串)并且在失败时短路到'false`时,`all`返回true,而当任何*元素时,`Any`返回true集合中的条件满足条件(基本上是一长串`或`语句)并且在传递中与`true`短路. (3认同)

Dav*_*lle 1

线路

a => a.Country == "F"

如果它是一个单独的 LINQ 语句,则将转换为类似以下内容:

来自 t.TravelRoute 中的地址
其中 a.Country = "F"
选择一个

任何意思是:任何。换句话说,如果 TravelRoute 中的任何对象的 Country 属性为“F”,它将返回 true

希望有帮助