К сожалению, я искал и прочитал около десятка связанных постов, но не совсем найти то, что мне нужно ...LINQ вложенного Состояние
Я хочу, чтобы возвращать объекты, как так:
((Status == 1 || Status == 2) && Value = 'Green')
Конечно, я не могу использовать круглые скобки в Linq, как я могу в SQL. Я попытался следующие:
list.Where(x => x.Status == 1 || x.Status == 2)
.Where(x => x.Value == 'Green')
// or...
list.Where(x => x.Value == 'Green')
.Any(x => x.Status == 1 || x.Status == 2)
// or...
list.Where(x => x.Status == 1 || x.Status == 2)
.Any(x => x.Value == 'Green')
(или несколько других вариантов их)
Является ли один метод больше «правильной», чем другой?
В то время как я могу дубасить некоторые результаты из него, у меня есть две основные проблемы:
- который является хорошим тоном (если есть один), и
- Мои индексы оптимизированы для статуса предикат первый ... Linq достаточно умный, чтобы реализовать это, и/или делает определенную версию выше, гарантируя, что предикаты индекса распространяются в оптимальном порядке?
Что не так с 'x => ((x.Status == 1 || x.Status == 2) && x.Value = 'Green')' – dasblinkenlight
@dasblinkenlight - ничего, по-видимому ... это был первый вещь, которую я пробовал, но у меня, должно быть, был какой-то синтаксис неправильный (фактическое условие более сложное). Ваш комментарий побудил меня повторить это и, похоже, сейчас. Еще наполовину любопытно о №2 в моем вопросе, но если вы разместите свой комментарий в качестве ответа, я помету его. благодаря – jleach