我是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 {....}
答案 0 :(得分: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 };
基本上,在查询表达式语法中不能执行的操作是“select包括索引”重载。根本就没有任何语法可以转化为那种语法。 (对于其他一些操作也是如此 - 在这方面,VB的LINQ语法更丰富,尽管我个人对C#的方式感到满意;它避免添加太多的上下文关键字。)
(正如Mehrdad所说,这不是一个“编译”的查询。事实上,代码将被编译为完全相同的IL。)