我有一个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));
答案 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}}包含属性Uygulama
,Id
是yetkiUygulamaList
Uygulama