Конвертация лямбда-выражения - PullRequest
1 голос
/ 13 октября 2009

Я новичок в 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 {....}

1 Ответ

5 голосов
/ 13 октября 2009

Хорошо, вот ближайший синтаксис выражения запроса:

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 with index». Там просто нет никакого синтаксиса, который переводит на это. (То же самое относится и к нескольким другим операциям - синтаксис LINQ в VB в этом отношении более богат, хотя лично я доволен тем, как это делает C #; он избегает добавления слишком большого количества контекстных ключевых слов.)

(Как говорит Мехрдад, это не «скомпилированный» запрос. Фактически код будет скомпилирован с точно таким же IL.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...