这是两个C#类......
public class Address
{
public string Country;
public string City;
}
public class Traveller
{
public string Name;
public List<Address> TravelRoute;
}
...和一个数据列表(填写在某处)......
List<Traveller> Travellers;
...然后这个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);
我不明白查询:“Any”功能的含义是什么,“=&gt;”是什么意思运营商呢?
有人可以解释一下这段代码中发生了什么吗?谢谢!
答案 0 :(得分:7)
选择TravelRoute包含国家/地区“F”的所有旅行者。
如果列表中的任何对象满足传递给函数的条件,则Any
函数返回true。从方法签名中,您可以看到Func<>
委托需要返回bool
。这意味着它将采用任何返回布尔值的方法,包括提供的lambda表达式。
这与Where
不同,后者将根据传入的条件进行过滤。
=&gt;是lambda expression。在这种特殊情况下,它是编写anonymous delegate的快捷方式。
答案 1 :(得分:1)
该行
a => a.Country == "F"如果它是一个单独的LINQ语句,
将转换为类似的东西:
From a as Adress in t.TravelRoute Where a.Country = "F" Select a
任何意味着它:任何。 换句话说,如果travelRoute中的任何对象的Country属性为“F”,它将返回true
希望有所帮助
答案 2 :(得分:0)
这是一个lambda表达式。 http://msdn.microsoft.com/en-us/library/bb397687.aspx 看起来它正在选择所有在“F”中有任何旅行路线的旅行者,这可能是一个国家。
答案 3 :(得分:0)
=>
。
答案 4 :(得分:0)
任何过滤方法都说“接受符合以下条件的任何项目”。 a =&gt; ...业务意味着“给定一个参数a,这是一个方法” - 正如其他人所说,它用于lambda表达式。 编辑:将“属性”更改为“参数”