开发者

nhibernate.linq simple (read dumb) question

开发者 https://www.devze.com 2022-12-08 06:24 出处:网络
I\'m trying to wrap my he开发者_如何学JAVAad around linq -> nhib I have a simple bit of sql that i\'m trying to get working in nhibernate.linq

I'm trying to wrap my he开发者_如何学JAVAad around linq -> nhib

I have a simple bit of sql that i'm trying to get working in nhibernate.linq

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

The list of excluded DataIndex values comes in in the form of a List<string> called excludeNames

Here is what I have tried but it seems that it's not really feeling the love:

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 error:

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. 

I'm pretty sure I'm borfing this from the offset so any pointers would be well appreciated :)

w://


Contains doesn't accept a list.

There are ways to work around this in LINQ, but I'm not sure which, if any, of those will work in NH Linq


I think you have your exclusion backwards.

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) will produce the SQL item in (...collection...), adding the negation will get you what you want.

0

精彩评论

暂无评论...
验证码 换一张
取 消