Lambda表达式转换
问题描述:
我是Linq的初学者。Lambda表达式转换
如何重写这个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#的操作方式感到满意;它避免了添加太多的上下文关键字。)
(As Mehrdad说,这不是一个“编译”的查询,实际上代码将被编译为完全相同的IL)。
+0
击败我3秒!没关系。 – 2009-10-13 07:25:14
+0
不知道包含索引的重载。然而,另一个linq谜题解决了: - D. – 2009-10-13 07:28:14
这不是一个“编译”查询。这只是一种不同的语法。它没有技术上的优势。 – 2009-10-13 07:23:51
我不需要技术优势。抱歉! – anonymous 2009-10-13 07:25:18
我感觉Linq语法比lambda变体更具可读性。 – 2009-10-13 07:29:15