同一列表/表中的Linq子查询

时间:2020-08-04 07:47:25

标签: mysql linq

首先..对不起,我的英语:)

我有一个包含以下列的Mysql表

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

我要在以下位置找到ID

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'))

此查询工作正常。

在我的UI(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。

如果我输入123234,则会发现0个项目。

这对我来说是合乎逻辑的,但是我找不到使用linq做到这一点的方法:-/

0 个答案:

没有答案
相关问题