powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / linq: not equal
11 сообщений из 11, страница 1 из 1
linq: not equal
    #38323392
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!

У меня есть linq запрос:

Код: c#
1.
2.
3.
4.
var query = from q in ddc.ContactPersons
                        join c in ddc.Customers on q.IDCustomer equals c.ID
                        where (q.IDCompany.ToString() == ddlCompany.SelectedValue)
                        select c;



Он работает с точностью до наоборот, т.е. выбирает все IDCustomer из ContactPersons, которые соответствуют ID из Customers.
Скажите, можно ли как-то поменять запрос, чтобы стало NOT EQUALS ?
Или нужно переделывать и нельзя с помощью одного linq запроса такую выборку организовать?
...
Рейтинг: 0 / 0
linq: not equal
    #38323402
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students,

противоречит самой идее join

но решение есть http://stackoverflow.com/questions/3762869/is-there-a-not-equal-in-a-linq-join
...
Рейтинг: 0 / 0
linq: not equal
    #38323406
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
q.IDCompany.ToString() == ddlCompany.SelectedValue

Если IDCompany имеет целочисленный тип, то это классический образец индусского кода: If(boolValue.ToStiring()=="true")... Интересно, что за запрос к базе сгенерится.

По сабжу: запрос работает ровно так как надо: выбирает все IDCustomer из ContactPersons, которые соответствуют ID из Customers.
Students Или нужно переделывать и нельзя с помощью одного linq запроса такую выборку организовать?Такую это какую? В предыдущих словах нет ответа на этот вопрос.
...
Рейтинг: 0 / 0
linq: not equal
    #38323428
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть 2 таблицы:
ContactPersons
Customers

В это запросе я выбрал всех Customers, id Которых есть в таблице ContactPersons в поле IDCustomer, причём я выбираю только те строчки ContactPersons в которых поле IDCompany равно какому-то числу.
Это работает. Т.е. выбирает тех людей, которые являются контактными персонами в данной компании.

Теперь нужно наоборот - выбрать всех людей, которые НЕ являются контактными персонами в данной компании.

Тут
http://stackoverflow.com/questions/3762869/is-there-a-not-equal-in-a-linq-join

уже получается на одним запросом. А одним можно?
...
Рейтинг: 0 / 0
linq: not equal
    #38323459
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается, что только так?
http://stackoverflow.com/questions/3762869/is-there-a-not-equal-in-a-linq-join

Через обычный linq запрос никак не сделать, даже без equal?
...
Рейтинг: 0 / 0
linq: not equal
    #38323527
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал как в примере через 2 запроса, тупизм.
Но по другому не знаю как.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
var query = from q in ddc.ContactPersons
                        join c in ddc.Customers on q.IDCustomer equals c.ID
                        where (q.IDCompany.ToString() == ddlCompany.SelectedValue)
                        select c;

            List<Customer> cust1 = query.ToList();

            query = from q in ddc.Customers
                    select q;

            List<Customer> cust2 = query.ToList();

            List<Customer> result = cust2.Except(cust1).ToList();

            var query2 = result;
...
Рейтинг: 0 / 0
linq: not equal
    #38323567
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students,

Код: c#
1.
2.
3.
4.
5.
from q in ddc.ContactPersons
join c in ddc.Customers on q.IDCustomer equals c.ID into j1
from j2 in j1.DefaultIfEmpty()
where j2 == null && (q.IDCompany.ToString() == ddlCompany.SelectedValue)
select c;



запрос не тестил, но суть такая — делаете LEFT JOIN (с помощью DefaultIfEmpty()), проверяете где касоемеры == null — это ваши люди.
...
Рейтинг: 0 / 0
linq: not equal
    #38323568
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students,

еще можете использовать метод Contains или Any, получите в результате эффективный EXISTS. в общем, решений море, переживать тут совсем не из-за чего.
...
Рейтинг: 0 / 0
linq: not equal
    #38324079
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students,

а так:
Код: c#
1.
2.
3.
4.
5.
var query = from q in ddc.ContactPersons
            from c in ddc.Customers
            where q.IDCustomer != c.ID
            where (q.IDCompany.ToString() == ddlCompany.SelectedValue)
            select c;

?
...
Рейтинг: 0 / 0
linq: not equal
    #38324130
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так у меня у самого была идея, но он выбирает больше чем надо, т.е. он выбирает where1 + where2 и людей становится ещё больше.
...
Рейтинг: 0 / 0
linq: not equal
    #38329277
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StudentsПривет всем!

У меня есть linq запрос:

Код: c#
1.
2.
3.
4.
var query = from q in ddc.ContactPersons
                        join c in ddc.Customers on q.IDCustomer equals c.ID
                        where (q.IDCompany.ToString() == ddlCompany.SelectedValue)
                        select c;



Он работает с точностью до наоборот, т.е. выбирает все IDCustomer из ContactPersons, которые соответствуют ID из Customers.
Скажите, можно ли как-то поменять запрос, чтобы стало NOT EQUALS ?
Или нужно переделывать и нельзя с помощью одного linq запроса такую выборку организовать?
Код: c#
1.
2.
3.
4.
var query = from q in ddc.ContactPersons
                        from c in ddc.Customers 
                        where (q.IDCompany.ToString() == ddlCompany.SelectedValue) && q.IDCustomer!=c.ID
                        select c;
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / linq: not equal
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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