2013-03-12 64 views
0

我的SQL查询如下。子顶部1和多于等于使用Linq的子查询

select st.kProductVersionPlatformFrom, st.kProductVersionPlatformTo, pv.kProduct, pv.nId, * 
from vSysTable st 
left join vProductVersion pv on st.kProductVersionPlatformFrom = pv.nId 
where 
st.kProductVersionPlatformTo >= (select top 1 nid from vProductVersion where kProduct = 2 
           and kProductVersionPlatform = 87 order by nId desc) 

我试图将其转换为LINQ的,但无法找到的方式来使用大于等于

var systemTableList = (from sysTableEntity in _sysTableEntityRepository.AsQueryable() 
         join versionEntity in _productVersionRepository.AsQueryable() on 
          sysTableEntity.ProductVersionPlatformFrom equals versionEntity.Id 
          into leftjoined 
          from joinedsysVersionTable in leftjoined.DefaultIfEmpty() 
          where (from versionEntity in _productVersionRepository.AsQueryable() 
            where versionEntity.ProductEntityId.Equals(2) && 
           versionEntity.PlatformProductVersionEntityId.Equals(87) 
            orderby versionEntity.Id descending 
            select versionEntity.Id).Take(1).Contains(sysTableEntity.ProductVersionPlatformFrom >= 87) 
         select new { sysTableEntity}); 

但它给我的错误附近的包含关键字的“之类的说法无法推断用法“

这里用什么来代替包含?我也尝试使用但仍然无法使用。

回答

1

因为子查询

select top 1 nid 
from vProductVersion 
where kProduct = 2 
and kProductVersionPlatform = 87 
order by nId desc 

不相关,您可以单独使用它,然后将其值用在你的主查询。另外,你确定,查询总是会返回值(非空)?

var nid = from versionEntity in _productVersionRepository.AsQueryable() 
where versionEntity.ProductEntityId.Equals(2) && 
versionEntity.PlatformProductVersionEntityId.Equals(87) 
orderby versionEntity.Id descending 
select versionEntity.Id).First(); 

然后用这个:

var systemTableList = 
    from sysTableEntity in _sysTableEntityRepository.AsQueryable() 
     join versionEntity in _productVersionRepository.AsQueryable() 
    on sysTableEntity.ProductVersionPlatformFrom equals versionEntity.Id 
      into leftjoined 
    from joinedsysVersionTable in leftjoined.DefaultIfEmpty() 
    where ProductVersionPlatformTo >= nid; 
+0

如果它所返回null? – DevelopmentIsMyPassion 2013-03-12 11:33:41

+0

如果top 1查询返回null,该怎么办? – DevelopmentIsMyPassion 2013-03-12 11:46:10

+0

@AshReva你必须告诉我。 – 2013-03-12 11:51:13