Подзапросы Linq в одном списке / таблице - PullRequest
0 голосов
/ 04 августа 2020

Прежде всего ... извините за мой Engli sh:)

У меня есть таблица Mysql со следующими столбцами

ID | Column A | Column B
---+----------+----------
1    XYZ        123
1    ABC        234
2    KLM        987
2    XYZ        741

Я хочу найти идентификатор, в котором :

XYZ == 123 AND ABC == 234

Для тестирования я написал запрос в mysql, который выглядит так:

select distinct archivid
from archiv_values
where archivid in (select archivid
                   from archiv_values 
                   where (Column_A = 'XYZ' and VALUE = '123'))
  and archivid in (select archivid
                   from archiv_values 
                   where (Column_B = 'ABC' and VALUE = '234'))

Этот запрос работает нормально.

В моем интерфейсе (WPF), у меня есть список текстовых полей (в списке), где пользователь может вводить данные для поиска.

Количество доступных для поиска значений другое. Из-за этого я использую foreach для просмотра списка значений:

Expression<Func<ArchivValue, bool>> searchCondition = m => true;

foreach (DocumentColumn col in lb_Filter.Items)
{
    if (!string.IsNullOrEmpty(col.InputValue))
    {
           searchCondition = searchCondition.And(m => m.Column_A == col.Column_A && m.Value == col.InputValue);
    }
}

Это приводит к тому, что если я ввожу только одно значение, например 123, я нахожу ID 1.

Если я введу 123 и 234, я найду 0 элементов.

Это логично для меня, но я не могу найти способ сделать это с помощью linq: - /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...