在NHibernate LINQ中选择配对列值列表中的行

时间:2015-04-09 16:16:06

标签: c# linq nhibernate

我有一组独特的int对,可能如下所示:(1,3),(1,4),(1,5),(2,3),(2,5)它们可以是最方便的数据结构(例如List<KeyValuePair<int, int>>List<Tuple<int, int>>Dictionary<int, List<int>>等。)

我需要选择特定数据库表中的所有行,其中col1col2分别匹配任何对中的第一个和第二个值。因此,使用上面的示例对,将选择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理解的方式编写此查询的最佳方法是什么?

1 个答案:

答案 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;