C# 将Linq子查询转换为按查询分组
我有一个疑问:C# 将Linq子查询转换为按查询分组,c#,linq,group-by,subquery,C#,Linq,Group By,Subquery,我有一个疑问: var query = from i in GetStorageShelfCombinedDTO(s) let res = (from r1 in s.Query<RefResourceStorageShelfDTO>() join r2 in s.Query<ResourceDTO>() on r1.ResourceID equals r2.Id
var query = from i in GetStorageShelfCombinedDTO(s)
let res = (from r1 in s.Query<RefResourceStorageShelfDTO>()
join r2 in s.Query<ResourceDTO>() on r1.ResourceID equals r2.Id
where r1.StorageShelfID == i.StorageShelf.Id
select r2)
select new StorageShelfResourcesCombinedDTO() { StorageShelf = i.StorageShelf, StorageRack = i.StorageRack, Aisle = i.Aisle, Channel = i.Channel, StorageZone = i.StorageZone, StockArea = i.StockArea, Resources = res.ToList() };
return query;
有没有可能以这样的方式编写这个查询,我不需要我想过使用GROUPBY的子查询,但我没有找到一种方法
如果需要,我的呼叫GetStorageShelfCombinedTo如下所示:
public static IQueryable<StorageShelfCombinedDTO> GetStorageShelfCombinedDTO(BLToolKitSessionWrapper<WMSDL> s)
{
var query = from i in s.Query<StorageShelfDTO>()
join r1 in s.Query<StorageRackDTO>() on i.StorageRackID equals r1.Id
join r2 in s.Query<AisleDTO>() on i.AisleID equals r2.Id
join r3 in s.Query<ChannelDTO>() on i.ChannelID equals r3.Id
join r4 in s.Query<StorageZoneDTO>() on i.StorageZoneID equals r4.Id
//join r5 in s.Query<PlantDTO>() on i.PlantID equals r5.Id
join r6 in s.Query<StockAreaDTO>() on i.StockAreaID equals r6.Id
select new StorageShelfCombinedDTO {StorageShelf = i, StorageRack = r1, Aisle = r2, Channel = r3, StorageZone = r4/*, Plant = r5*/, StockArea = r6};
return query;
}
您必须使用linq执行左连接。要做到这一点,请使用into操作符。使用into linq的Seams可以工作,但我的SQL创建者不理解这一点-