我正试着把头包裹在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.
我很确定我从偏移中感到厌烦,所以任何指针都会受到很好的赞赏:)
瓦特://
答案 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中使用