powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ: оператор OR в цикле
10 сообщений из 10, страница 1 из 1
LINQ: оператор OR в цикле
    #39313566
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть массив данных mas[n] (длина наперёд не известна) который надо использовать как WHERE OR
Код: sql
1.
2.
SELECT * FROM Table1
WHERE FieldX=mas[1] OR FieldX=mas[2] OR ... OR FieldX=mas[n]


В SQL делается легко, например в цикле:
Код: c#
1.
2.
3.
4.
5.
string SQL = "SELECT * FROM Table1 WHERE ";
for(int i=0; i<n; i++)
{
  SQL += "FieldX=" + mas[i] + " OR ";
}


(там надо ещё проверку на последний OR)

А вот как LINQ такое сделать?
Подскажите пожалуйста!

П.С. Я так понимаю, что надо юзать как-то Contains(...) ?
...
Рейтинг: 0 / 0
LINQ: оператор OR в цикле
    #39313571
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
potkin
П.С. Я так понимаю, что надо юзать как-то Contains(...) ?

Как-то да.
...
Рейтинг: 0 / 0
LINQ: оператор OR в цикле
    #39313572
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
potkinВ SQL делается легко, например в цикле

За такое "легко" - с вертухи в табло.
...
Рейтинг: 0 / 0
LINQ: оператор OR в цикле
    #39313577
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueКак-то да.
А можно хоть какой-то примерчик?
MonochromatiqueЗа такое "легко" - с вертухи в табло.
Ок, держу удар, а как, по Вашему, будет правильно и в SQL?
...
Рейтинг: 0 / 0
LINQ: оператор OR в цикле
    #39313588
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dynamic LINQ
...
Рейтинг: 0 / 0
LINQ: оператор OR в цикле
    #39313591
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
potkinMonochromatiqueКак-то да.
А можно хоть какой-то примерчик?


Код: c#
1.
2.
3.
4.
5.
  var _array = Enumerable.Range(1, 15);

            var _range = Enumerable.Range(10, 15);

            var result = _array.Where(arrayElement => _range.Contains(arrayElement));
...
Рейтинг: 0 / 0
LINQ: оператор OR в цикле
    #39313593
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
potkinОк, держу удар, а как, по Вашему, будет правильно и в SQL?


Либо туда (на сервер), либо сюда (на клиента)

Всю логику убрать на SQL, никаких заигрываний с клиентом - фильтровать внутренним соединением.

Не говоря о том, что вообще в SQL есть оператор IN
...
Рейтинг: 0 / 0
LINQ: оператор OR в цикле
    #39313628
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
potkinЕсть массив данных mas[n] (длина наперёд не известна) который надо использовать как WHERE OR
Код: sql
1.
2.
SELECT * FROM Table1
WHERE FieldX=mas[1] OR FieldX=mas[2] OR ... OR FieldX=mas[n]


Лучше WHERE in
Код: c#
1.
WHERE FieldX in (mas[1], mas[2], ... , mas[n])
...
Рейтинг: 0 / 0
LINQ: оператор OR в цикле
    #39314504
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
  var _array = Enumerable.Range(1, 15);

            var _range = Enumerable.Range(10, 15);

            var result = _array.Where(arrayElement => _range.Contains(arrayElement));


Это развернет в in (.....
potkinЕсть массив данных mas[n] (длина наперёд не известна) который надо использовать как WHERE OR

и
https://msdn.microsoft.com/ru-ru/library/ms177682.aspx Включение очень большого количества значений (много тысяч) в предложение IN может привести к интенсивному расходованию ресурсов и возврату ошибки 8623 или 8632. Чтобы избежать этой проблемы, храните элементы списка IN в таблице.
...
Рейтинг: 0 / 0
LINQ: оператор OR в цикле
    #39318679
B7_Ruslan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
potkinП.С. Я так понимаю, что надо юзать как-то Contains(...) ?

Contains() развернется в оператор IN(p0, p1, ...). Больше 2000 аргументов в запросе передать нельзя.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ: оператор OR в цикле
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]