注意:所有代码都写在我的头上。它可能包含一些错误。只要得到这个问题的总体观点)
采用此类定义:(为简单起见减少)
public class CodedValue
{
public string Code { get; set; }
public string Value {get; set; }
}
拿那些对象:
CodedValue cv1 = new CodedValue(){ Code = "A", Value = "1" };
CodedValue cv2 = new CodedValue(){ Code = "B", Value = "2" };
IList<CodedValue> cvList = new List<CodedValue>();
cvList.Add(cv1);
cvList.Add(cv2);
cvList 包含要过滤的 CodedValue 列表。
让我们假设我的数据库包含这些记录:
CODE VALUE
A 1
A 2
B 1
B 2
现在,我想检索 codedvalue 在列表中的所有对象
var filter = from o in MyRepository.List()
where cvList.Contains(o.CodedValue)
select o;
NHibernate 将此 Linq 翻译为:
select [Fields...] from [Table...]
where Code in ('A', 'B') and Value in ('1', '2');
这是错误的。如果您看一下我的记录示例,此 SQL 将返回所有行。SQL 应翻译为:
select [Fields...] from [Table...]
where (Code = 'A' and Value = '1') or (Code = 'B' and Value = '2');
那么,我可以使用 Linq 获得我想要的结果吗?如果是这样,怎么做?如果没有,我该如何实现?
谢谢