2009-10-13 3 views
1

Я новичок в Linq.Преобразование выражения лямбда

Как я могу переписать это выражение лямбда как скомпилированный запрос 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 {....} 
+2

Это не «скомпилированный» запрос. Это просто другой синтаксис. Он не имеет технического преимущества. –

+0

Мне не нужны технические преимущества. Сожалею! – anonymous

+0

Я чувствую, что синтаксис Linq более читабельен, чем вариант лямбда. –

ответ

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 }; 

В основном один бит вы не может сделать в синтаксисе выражения запроса является «выбрать в том числе индекс "перегрузка. Там просто нет никакого синтаксиса, который переводится на это. (То же самое касается и многих других операций - синтаксис LINQ в VB более богачен в этом отношении, хотя лично я доволен тем, как это делает C#, он избегает добавления слишком большого количества контекстуальных ключевых слов.)

(As Mehrdad говорит, что это не «скомпилированный» запрос. На самом деле код будет скомпилирован точно так же ИЛ.)

+0

Ударьте меня на 3 секунды! Неважно. –

+0

Не знал о перегрузке, содержащей индекс. Еще одна тайна тайны разрешила: -D –

Смежные вопросы