首先..对不起,我的英语:)
我有一个包含以下列的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。
如果我输入123
和234
,则会发现0个项目。
这对我来说是合乎逻辑的,但是我找不到使用linq做到这一点的方法:-/