我是Linq的初学者。

如何将此Lambda表达式重写为linq编译查询?

var query5 = CustomerList.Select((cust, index) =>  new {cust, index})
                         .Where(c =>  c.cust.Country == "USA"  &&  c.index  >  70)
                         .Select(c =>  new { c.cust.CustomerID, c.cust.CompanyName,
                                            c.index });


喜欢

var query5 = from c in .......
             where .....
             select c new {....}

最佳答案

好吧,这是最接近的查询表达式语法:

var query5 = from c in CustomerList.Select((cust, index) =>  new {cust, index})
             where c.cust.Country == "USA"  &&  c.index  >  70
             select new { c.cust.CustomerID, c.cust.CompanyName, c.index };


基本上,在查询表达式语法中不能做到的一点是“选择包括索引”重载。根本没有任何语法可以转换为该语法。 (其他许多操作也是如此-VB的LINQ语法在这方面更丰富,尽管我个人对C#的方式感到满意;它避免添加太多上下文关键字。)

(正如Mehrdad所说,这不是“已编译”查询。实际上,代码将被编译为完全相同的IL。)

关于c# - Lambda表达式转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1558655/

10-12 18:22