Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Linq子查询转换为按查询分组_C#_Linq_Group By_Subquery - Fatal编程技术网

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创建者不理解这一点-