我有一组独特的int
对,可能如下所示:(1,3),(1,4),(1,5),(2,3),(2,5)它们可以是最方便的数据结构(例如List<KeyValuePair<int, int>>
,List<Tuple<int, int>>
,Dictionary<int, List<int>>
等。)
我需要选择特定数据库表中的所有行,其中col1
和col2
分别匹配任何对中的第一个和第二个值。因此,使用上面的示例对,将选择col1
中的2和col2
中的3的行,而col1
中的2和col2
中的4的行将被选中不
如果这是标准LINQ的正常集合,可以很简单地完成:
var pairs = new List<KeyValuePair<int, int>>();
...
var result = collection.Where(row => pairs.Contains(new KeyValuePair<int, int>(row.col1, row.col2));
或
var pairs = new Dictionary<int, List<int>>();
...
var result = collection.Where(row => pairs.ContainsKey(row.col1) && pairs[row.col1].Contains(row.col2));
然而,NHibernate不支持这种事情。以NHibernate理解的方式编写此查询的最佳方法是什么?
答案 0 :(得分:0)
试试这个:
var pairs = new List<Tuple<int, int>>();
// fill list of typles somehow...
var result = from c in collection
from p in pairs
where c.Item1 == p.Item1 && c.Item2 == p.Item2
select c;