у меня есть это очень простой Linq запрос (функция .dump() используется с LINQPad для того, чтобы просмотреть результаты):Добавить элемент списка на основе Условный с Linq Expression
void Main()
{
var myList = new List<string>
{
"One", "Two", "Three"
};
var result = from o in myList
select o;
result.Dump();
}
Как можно впрыснуть оператор if в запрос Linq, который заполняет result
, чтобы он проверял, есть ли в списке «Четыре», а если нет, то добавьте его? Я понимаю, что есть способы сделать это, посмотрев результат после того, как Linq заполнил result
, но я хотел бы добавить эту логику в один запрос Linq.
спасибо.
EDIT/CLARIFICATION: логика «if» должна быть внутри запроса Linq. Вот скелетной код:
var result = from o in myList
select o
[now add "four" if and only if it is not in the result]
[now end the query and ensure `result` contains "one", "two", "three", and "four"];
ВТОРОЙ EDIT: Я пытаюсь запроса и добавить в список в одной операции. Кстати, я сделал этот очень простой пример вместо того, чтобы дать гораздо более сложный сценарий, который я пытаюсь обработать, между прочим, так что это не так, как будто я борюсь с тем, как добавить новый элемент в объект List. :)
Так вот что я собирался сделать:
// запросить список, чтобы увидеть, если «четыре» в списке (запрос Linq идет здесь, чтобы проверить на «четыре»)
// если результат выше ложно затем добавить «четыре» в MyArray Список (добавить новый элемент массива здесь)
Вместо этого, я хотел бы сделать следующее:
// запросить список для его содержимого и als o добавить «четыре», если их нет в списке. // все это нужно сделать в одном «выбрать», используя Linq
Это невозможно?
спасибо.
Что заставляет вас думать, что список будет запрошен дважды? Выражения LINQ являются декларативными, а не логикой выполнения. –
Пересмотрено после вашего комментария. На самом деле, делая этот простой пример, я думаю, что создаю путаницу. Моя «более сложная» реальная проблема Linq будет проходить через список дважды, если у него есть вложенные выборки. Однако я не хочу вникать в эту сложность в этом вопросе, поэтому я пересмотрел свой ОП. Благодарю. – Jazimov