代码之家  ›  专栏  ›  技术社区  ›  Slauma

这个LINQ查询做什么?

  •  5
  • Slauma  · 技术社区  · 14 年前

    这是两个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”函数是什么意思,而“=>”运算符是做什么的?

    有人能给我解释一下这段代码是怎么回事吗?谢谢!

    5 回复  |  直到 14 年前
        1
  •  1
  •   David Brunelle    14 年前

    线

    a => a.Country == "F"
    

    如果它是一个单独的LINQ语句,则会转换为类似这样的内容:

    From a as Adress in t.TravelRoute
    Where a.Country = "F"
    Select a
    

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

    希望有帮助

        2
  •  7
  •   Dave Van den Eynde    14 年前

    它选择旅行路线中包含“F”国家的所有旅行者。

    这个 Any 如果列表中的任何对象满足传入函数的条件,则函数返回true。从方法签名中,可以看到它需要 Func<> 委托返回 bool .这意味着它采用任何将返回布尔值的方法,包括提供的lambda表达式。

    这和 Where ,将根据传入的条件进行筛选。

    a=gt; lambda expression . 在这种情况下,它是一种快捷方式 anonymous delegate .

        3
  •  0
  •   Eric Mickelsen    14 年前

    它是lambda表达式。 http://msdn.microsoft.com/en-us/library/bb397687.aspx 看起来它选择了所有的旅行者 任何 “F”的旅游路线,大概是一个国家。

        4
  •  0
  •   unwind    14 年前

    => 用于 C# lambdas .

        5
  •  0
  •   expedient    14 年前

    any是一种过滤方法,它表示“接受任何符合以下条件的项目”。 A=>…业务意味着“给定一个参数a,这里有一个方法”——正如其他人所说,它用于lambda表达式。 编辑:将“属性”更改为“参数”