Linq包含在一个查询中



我有一个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));

这必须适用于

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

您可以执行联接,这将更简单,更适合您的情况。

如果我理解,query是包含属性Uygulama的类(我们称之为AObj)的"集合",类Uygulama包含属性IdyetkiUygulamaListUygulama 的"集合

//will return a IEnumerable<AObj>
IEnumerable<AObj> query = query.Join(yetkiUygulamaList, a => a.Uygulama.Id, u => u.Id, (a,u)=>a);

ToList()通过执行查询来实现实体化,之后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));

相关内容

  • 没有找到相关文章

最新更新