nhibernate.linq简单(读愚蠢)问题

时间:2009-10-14 11:52:27

标签: linq nhibernate

我正试着把头包裹在linq周围 - > nhib

我有一个简单的sql,我正试图在nhibernate.linq中工作

 select * from 
 ColModel where ColModel.DataIndex 
 not in ('CostElement1', 'CostElement2', 'CostElement3')
 and ColModel.ReportId = 1

排除的DataIndex值列表以List<string> excludeNames

的形式出现

这是我尝试过的,但似乎并没有真正感受到爱:

var s = base._sessionManager.OpenSession();

var query = from col in s.Linq<ColModel>()
            where col.Report.Id == reportid &&
            !(from c in s.Linq<ColModel>() select c.DataIndex).Contains(excludeNames)
            select col;

return query.ToList();

错误:

The type arguments for method 'System.Linq.Enumerable.Contains<TSource>(System.Collections.Generic.IEnumerable<TSource>, TSource)' cannot be inferred from the usage. Try specifying the type arguments explicitly. 

我很确定我从偏移中感到厌烦,所以任何指针都会受到很好的赞赏:)

瓦特://

2 个答案:

答案 0 :(得分:0)

我认为你的排斥反过来了。

s = base._sessionManager.OpenSession();

var query = from col in s.Linq<ColModel>()
            where col.Report.Id == reportid &&
                  !excludeNames.Contains(col.DataIndex)
            select col;

return query.ToList();

Collection.Contains(item)将生成SQL item in (...collection...),添加否定将为您提供所需的内容。

答案 1 :(得分:0)

包含不接受列表。

有很多方法可以在LINQ中解决这个问题,但我不确定其中哪些(如果有的话)可以在NH Linq中使用