Могу ли я использовать предложение if с Linq где?Если условие в LINQ Где предложение
ответ
Да, вы можете, как:
var query = someList.Where(a => a == "something");
if (condition)
{
query = query.Where(b => b == "something else");
}
var result = query.ToList();
Поскольку Where
производит в IQueryable
, исполнение откладывается до ToList
в моем примере, так что вы можете цепи Where
S вместе столько, сколько вы хотите, а затем просто запустить его после того, как вы пройдете все свои условия.
использования делают из WhereIf
метода extenstion avaialbe в LINQ
Пример
if (SearchControlMain.PostingID.HasValue)
query = query.Where(q => q.PostingID == SearchControlMain.PostingID);
вместо того, чтобы идти на выше ниже
query = query.WhereIf(SearchControlMain.CategoryID.HasValue, q => q.CategoryID == SearchControlMain.CategoryID);
Одна из ссылок мертва, и в моей EF нет такой вещи, как 'WhereIf'. – A1rPun
Я не уверен, что вопрос, но возможный ответ может быть:
Да,
list.Where(item => { if (Foo(item)) return true; else return false; });
Было бы сложным способом сказать что-то простое, хотя.
Как это возможно, вы пробовали? –
Да, по крайней мере, он работает с linq-to-objects. –
Который равен: list.Where (item => Foo (item)); –
Не уверен, если это уместно, но это очень полезно, вы можете использовать сослагательное наклонение вполне сподручно с условными где пунктами:
var r = (from p in productinfo.tblproduct
where p.Accountid == accountid
select p);
if (uuf1 != null)
r = r.Where(p => p.UnitUserField1 == uuf1);
if (uuf2!= null)
r = r.Where(p => p.UnitUserField2 == uuf2);
Так где положение будет изменено в соответствии с тем, что в UUF1 или UUF2 т.е. у вас может быть только UUF1 с информацией, и в этом случае он примет это и проигнорирует предложение UUF2 where, у вас могут быть оба, в которых он будет брать оба или у вас может не быть ничего в UUF1 или 2, и ваше предложение where просто примет accountid как предложение where.
У меня был такой сценарий, когда я должен был проверить нуль в самом списке. Это то, что я сделал.
items = from p in items
where p.property1 != null //Add other if conditions
select p;
// Use items the way you would use inside the if condition
Но Kelsey отметил, что это будет работать тоже -
items = items.Where(a => a.property1 != null);
var query = someList.Where(a => (someCondition)? a == "something" : true);
так, если 'someCondition' ложно 'где' будет пропущен.
Это действительно должен быть принятый ответ –
В моем случае были два «условно», где в зависимости от ключей поиска, так что я сделал:
var query = db.Package.Include("SomeThing")
.Where(item => searchString1 == null || searchString1 == "" || item.Contains(searchString1))
.Where(item => searchString2 == null || searchString2 == "" || item.Contains(searchString2));
...
- 1. Linq, если условие в том, где положение
- 2. Хо использовать If условие в LINQ Где предложение
- 3. asp.net C#: где предложение обходит условие ИЛИ в LINQ
- 4. Linq, где положение с тем, если условие
- 5. объект в LINQ где предложение
- 6. Если условие в linq
- 7. условие в где предложение с необязательным параметром
- 8. Список в Linq, где условие
- 9. LINQ Где предложение Несколько условий
- 10. LINQ - если условие
- 11. LINQ где предложение с оператором if
- 12. Если условие в XDocument Linq запрос
- 13. Оператор if в LINQ где предложение C#
- 14. Совокупность в том, где предложение LINQ
- 15. где предложение в LINQ to Entites DataBind
- 16. linq где условие на подзапросе
- 17. LINQ Где условие против datatable
- 18. Использование string.compare в запросе linq где предложение
- 19. Как преобразовать строку в LINQ где предложение
- 20. Где предложение с linq в readOnlyCollection объекта
- 21. Linq - Как сохранить «где условие» в переменной
- 22. Условие переменной в LINQ, где статья
- 23. Сложный Linq-to-SQL, где условие help
- 24. LINQ Где предложение inline для цикла?
- 25. LINQ заявление, как если условие
- 26. LINQ где предложение работает против отображенного объекта
- 27. Как создать условие, когда предложение с использованием LINQ
- 28. Сравните два списка объектов в where, где предложение LINQ
- 29. Subsonic3 Где «OR» предложение linq query
- 30. LINQ - Где предложение с использованием содержит
+1 Лучший ответ из трех. –
Где не производится IQueryable, он производит IEnumerable. Неверный ответ –
@OmerK Где на самом деле продукт IQueryable, если объект, на котором запущен метод расширения, также является IQueryable, если вы запустите его в IEnumerable, вы получите IEnumerable. –