Lambda表达式转换

use*_*312 1 c# lambda

我是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 });
Run Code Online (Sandbox Code Playgroud)

喜欢

var query5 = from c in .......
             where .....
             select c new {....}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

那么这是最接近的查询表达式语法:

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 };
Run Code Online (Sandbox Code Playgroud)

基本上,在查询表达式语法中你不能做的一点是"select包括索引"重载.根本就没有任何语法可以转化为那种语法.(同样适用于其他一些操作 - 在这方面,VB的LINQ语法更丰富,尽管我个人对C#的方式感到满意;它避免添加太多的上下文关键字.)

(正如Mehrdad所说,这不是一个"编译"的查询.事实上,代码将被编译为完全相同的IL.)