当前位置:  开发笔记 > 数据库 > 正文

使用包含bigint的嵌套LINQ查询

如何解决《使用包含bigint的嵌套LINQ查询》经验,为你挑选了1个好方法。

这是我想要的SQL(ClearinghouseKeybigint):

select *
from ConsOutput O
where O.ClearinghouseKey IN (
  select distinct P.clearinghouseKey
  from Project P
  Inner join LandUseInProject L on L.ClearinghouseKey = P.ClearinghouseKey
  where P.ProjectLocationKey IN ('L101', 'L102', 'L103')
  and L.LandUseKey IN ('U000', 'U001', 'U002', 'U003')
)

内部查询是直接的,并在LINQPad中给出正确的结果:

var innerQuery = (from p in Projects
                  join l in LandUseInProjects on p.ClearinghouseKey equals l.ClearinghouseKey
                  where locations.Contains(p.ProjectLocationKey) 
                  &&  (landuses.Contains(l.LandUseKey)) 
                  select new { p.ClearinghouseKey  }).Distinct();

但是外部查询给出了错误:从...中键入参数包含..无法从用法推断:

var returnQuery = from o in OperOutput
                  where (innerQuery).Contains(o.ClearinghouseKey)
                  select o;

是因为ClearinghouseKey是一个bigint?还有其他任何方式来编写此查询吗?

谢谢,珍妮



1> Amy B..:

不要使用匿名类型:

select new { p.ClearinghouseKey })

应该

select p.ClearinghouseKey)

另外考虑使用Any而不是Contains(我没有理由选择其中一个而不是).

where innerQuery.Any(i => i == o.ClearinghouseKey)

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有