LINQ: конвертировать .Single() в нотацию запроса
Итак, я знаю нотацию запроса
var word = from s in stringList
where s.Length == 3
select s;
эквивалентно точечной нотации
var word = stringList
.Where(s => s.Length == 3)
.Select(s => s);
Но как преобразовать эту точечную нотацию в нотацию запроса?
var word = wordsList
.Single(p => p.Id == savedId);
Я не мог найти много ресурсов в Google.
Ответы
Ответ 1
Вы не можете. Многие функции LINQ не могут использоваться в синтаксисе запроса. В лучшем случае вы можете комбинировать оба и делать что-то вроде
var word = (from p in wordsList
where p.Id == savedId
select p).Single()
но в простом случае collection.Single(condition)
"точечная нотация" кажется мне более читаемой.
Существует список ключевых слов, используемых LINQ для MSDN, вы можете видеть, какие функции интегрированы в язык из этого списка.
Ответ 2
Single
не имеет точного эквивалента в нотации запроса.
Самое лучшее, что вы можете сделать, - это обернуть свой запрос в круглые скобки и позвонить. Соблюдайте сами.
Ответ 3
Единственное, что вы можете сделать, это:
var word = (from w in wordsList
where w.Id == savedId
select w).Single();
но Он не будет точно таким же. Он будет преобразован в
var word = wordsList
.Where(p => p.Id == savedId)
.Single();
Ответ 4
Single не является частью нотации запроса. Вы можете изменить свой первый пример следующим образом:
var word = (from s in stringList where s.Length == 3 select s).Single();