Linq包含在一个查询中

时间:2013-02-11 10:03:53

标签: c# linq nhibernate

我有一个List,我想写一个关于List的id的查询包含特定的表id。

我写这个并运行true但我想在同一个查询中写所有..

List<int> tempList=yetkiUygulamaList.Select(y => y.Id).ToList();
query = query.Where(x => tempList.Contains(x.Uygulama.Id));

错误的查询

query = query.Where(x => yetkiUygulamaList.Select(y =>y.Id).ToList().Contains(x.Uygulama.Id));

3 个答案:

答案 0 :(得分:0)

ToList()通过执行查询进行materilizes,之后NHibernate无法理解第一个查询应作为子查询包含在内。

只需删除无用的ToList():

IQueryable<int> tempList = yetkiUygulamaList.Select(y => y.Id);  // removed here
query = query.Where(x => tempList.Contains(x.Uygulama.Id));

上面的代码将生成一个SQL查询。如果你想把它全部放在一个C#代码行中,只需删除中间变量:

query = query.Where(x => yetkiUygulamaList.Select(y => y.Id).Contains(x.Uygulama.Id));

答案 1 :(得分:0)

这必须有效

query = query.Where(x => yetkiUygulamaList.Any(y=>y.Id == x.Uygulama.Id));

答案 2 :(得分:0)

您可以执行加入,它会更简单,更适合您。

如果我理解,query是一个类的“集合”(我们称之为 AObj ),其中包含属性Uygulama和类{{ 1}}包含属性UygulamaIdyetkiUygulamaList

的“集合”
Uygulama