如何在LINQ-to SQL中编写这个交叉应用查询?

前端之家收集整理的这篇文章主要介绍了如何在LINQ-to SQL中编写这个交叉应用查询?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下表格:
create table TableA (
    Id int primary key identity,Key int not null
)

create table TableB (
    Id int primary key identity,TableA_Id int not null foreign key references TableA(Id),Value varchar(80) not null
)

我想使用lambda表示法在LINQ-to-sql中编写以下查询

select TableA.Key,b.Value
from TableA
cross apply (
    select top 10 TableB.Value
    from TableB
    where TableA.Id = TableB.TableA_Id
    order by TableB.Value
) b
where TableA.Key between 0 and 999

我该怎么做?

解决方法

这应该是诀窍
var query = from a in context.TableA
            from b in context.TableB
                             .Where(x => x.TableA_Id == a.Id)
                             .OrderBy(x => x.Value)
                             .Take(10)
            where a.Key >= 0 && a.Key <= 999
            select new
            {
              a.Key,b.Value,};

猜你在找的MsSQL相关文章