我有以下的LINQ到实体查询与2加入,我想分页添加到表:
IQueryable<ProductInventory> data = from inventory in objContext.ProductInventory
join variant in objContext.Variants
on inventory.VariantId equals variant.id
where inventory.ProductId == productId
where inventory.StoreId == storeId
orderby variant.SortOrder
select inventory;
我知道我需要使用。加入()扩展方法,然后调用.OrderBy()跳过()。以()来做到这一点,我只是流汗绊倒在加入(语法),似乎并不能找到任何实例(网上或书)。
注:我连接表的原因是做了排序。 如果有更好的方法基于相关表中加入比的值进行排序,请包括它在你的答案。
2个可能的解决方案
我想这一个只是可读性的问题,但是这两种工作并且具有相同的语义。
1
IQueryable<ProductInventory> data = objContext.ProductInventory
.Where(y => y.ProductId == productId)
.Where(y => y.StoreId == storeId)
.Join(objContext.Variants,
pi => pi.VariantId,
v => v.id,
(pi, v) => new { Inventory = pi, Variant = v })
.OrderBy(y => y.Variant.SortOrder)
.Skip(skip)
.Take(take)
.Select(x => x.Inventory);
2
var query = from inventory in objContext.ProductInventory
where inventory.ProductId == productId
where inventory.StoreId == storeId
join variant in objContext.Variants
on inventory.VariantId equals variant.id
orderby variant.SortOrder
select inventory;
var paged = query.Skip(skip).Take(take);
荣誉对Khumesh和普拉与此帮助。 由于其余的贡献。