powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Linq IQuareable запрос
8 сообщений из 8, страница 1 из 1
Linq IQuareable запрос
    #38625016
Che0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую уважаемые знатоки.
Внимание вопрос:

Есть Коллекция
Код: c#
1.
IEnumerable<long >dirtyIds

. Надо реализовать селект к таблицу Users, что бы вернулась коллекция айдишников из dirtyids которых нету в UsedProduct. Так как количества записей в Users большое, то надо что бы обработка происходила на стороне бд.
А мой порочный мозг ничего лучше вот этого не родил.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public IEnumerable<long> RunAction(IEnumerable<long> ids)
        {

            using (DataEntities mde = new DataEntities())
            {
              var usedUsersId=  mde.Users.Where(x => x.Used == true).Select(x=>x.SiteId).ToList();
              return  ids.Where(x =>!usedUsersId.Contains(x));
            }
        }


Как переписать запрос что бы обработка запроса перенести на сервер бд.

Заранее спасибо.
...
Рейтинг: 0 / 0
Linq IQuareable запрос
    #38625035
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Linq IQuareable запрос
    #38625087
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Che0,
.. хотите, чтобы SQL-сервер работал, используйте еретическую конструкцию
Код: c#
1.
mde.ExecuteStoreQuery<long>(query)



..хотя это и обидно для прогрессивного программистского сообщества ...
...
Рейтинг: 0 / 0
Linq IQuareable запрос
    #38625100
Che0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
Так не пойдет, мне надо получить выборку из dirtyids, a на стэке наоборт из таблицы бд
...
Рейтинг: 0 / 0
Linq IQuareable запрос
    #38625135
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Che0Алексей К,
Так не пойдет, мне надо получить выборку из dirtyids, a на стэке наоборт из таблицы бдНет. Описанная конструкция трансформируется в SQL:

myTable.MyField IN(1, 2, 3, 4)
...
Рейтинг: 0 / 0
Linq IQuareable запрос
    #38625144
bormental
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выражение usedUsersId.Contains(x) интерпретируется в кучу параметров (myTable.MyField IN(1, 2, 3, 4)), и , действительно отдается серверу БД на выполнение. И там их больше чем 2 с небольшим тыщи не может быть в LINQ - я натыкался на такое в C# 4.0 . Когда у меня было больше 2 тыщ - выкидывало исключение. Так что все зависит от размера Вашей коллекции локальной.
...
Рейтинг: 0 / 0
Linq IQuareable запрос
    #38625173
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bormental,

bormental И там их больше чем 2 с небольшим тыщи не может быть в LINQ - я натыкался на такое в C#

Только не в LINQ, это ограничение MS SQL.
...
Рейтинг: 0 / 0
Linq IQuareable запрос
    #38625308
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouchbormental,

bormental И там их больше чем 2 с небольшим тыщи не может быть в LINQ - я натыкался на такое в C#

Только не в LINQ, это ограничение MS SQL.В старых версиях EF были проблемы с большими размерами Enumerable.Contains. В новых версиях это оптимизировано.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Linq IQuareable запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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