猿问

在 linq c# 中使用 Lambda 表达式时将 Join 转换为 GROUP JOIN

我正在尝试将连接更改为 LEFT 外连接,但遇到各种转换错误。以下是我目前的加入,有人可以就如何在不改变此加入的实际逻辑的情况下执行此操作提供任何建议吗?


 BRAND_NAME_MAP_MASTER objBrandNameMap = DB.PFC_MAP_MASTERs.Join(

          DB.BRAND_NAME_MAPs,

          a => a.BRAND_NAME_MAP_ID, b => b.BRAND_NAME_MAP_ID,

    (a, b) => new { a, b }).Where(x => x.a.BRAND_NAME_MAP_ID == BrandNameMapID && 

        x.b.BRAND_NAME_MAP_ID == BrandNameMapID).Select(x => x.a).FirstOrDefault();


qq_花开花谢_0
浏览 359回答 3
3回答

蝴蝶刀刀

如果那是您的整个查询,您应该使用 NetMage 的答案。但是,如果您仍然需要进行左外连接,请使用以下命令:BRAND_NAME_MAP_MASTER objBrandNameMap = DB.PFC_MAP_MASTERs.GroupJoin(          DB.BRAND_NAME_MAPs,          a => a.BRAND_NAME_MAP_ID,           b => b.BRAND_NAME_MAP_ID,          (a, b) => new { a, b })          .SelectMany(          x => x.b.DefaultIfEmpty(),          (x,y) => new { x.a, y}).Where(x => x.a.BRAND_NAME_MAP_ID == BrandNameMapID).Select(x => x.a).FirstOrDefault();

拉莫斯之舞

您的意图没有意义,因为您只是在获取 a。如果你只想要一个,那么就不需要左连接。虽然我已经编写了查询,它将为您提供左连接结果。您可以按照自己的方式使用它。BRAND_NAME_MAP_MASTER objBrandNameMap =     (from Master in DB.PFC_MAP_MASTERs.Where(x=>x.BRAND_NAME_MAP_ID ==BrandNameMapID)     join Map in DB.BRAND_NAME_MAPs.Where(z=>z.BRAND_NAME_MAP_ID ==BrandNameMapID)     on Master.BRAND_NAME_MAP_ID equals Map.BRAND_NAME_MAP_ID     into result     from res in result.DefaultIfEmpty()     select new {Master,res}).ToLisT()希望能帮助到你。
随时随地看视频慕课网APP
我要回答