首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq with join需要按ID区分行

Linq with join需要按ID区分行
EN

Stack Overflow用户
提问于 2020-10-30 02:24:33
回答 2查看 47关注 0票数 0

我得到了多行的组合。我需要唯一的供应商行与唯一的VendorCod。

代码:

代码语言:javascript
复制
IQueryable<VendorModel> vendors = (from vendor in _context.Vendor
                               join vp in _context.VendorProduct on vendor.Pkid equals vp.VendorId
                               where vp.ProductId == ProductId

                               select new VendorModel()
                               {
                                   VendorId = vendor.Pkid,
                                   Name = vendor.Name,
                                   VendorCode = vendor.VendorCode,
                                   FacilityId = 0,
                                   ClientId = 0,
                                   Active = vendor.Active ?? false,
                                   UpdatedAt = vendor.UpdatedAt,
                                   DeletedAt = vendor.DeletedAt
                               });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-30 02:50:08

对于一个供应商,您有许多产品,因此您必须应用适当的谓词,并且不需要连接。

通过导航属性:

代码语言:javascript
复制
var vendors = 
   from vendor in _context.Vendor
   where vendor.Products.Any(vp => vp.ProductId == ProductId)
   select new VendorModel
   {
       VendorId = vendor.Pkid,
       Name = vendor.Name,
       VendorCode = vendor.VendorCode,
       FacilityId = 0,
       ClientId = 0,
       Active = vendor.Active ?? false,
       UpdatedAt = vendor.UpdatedAt,
       DeletedAt = vendor.DeletedAt
   };

或者,如果您没有导航属性:

代码语言:javascript
复制
var vendors = 
   from vendor in _context.Vendor
   where _context.VendorProduct.Any(vp => vendor.Pkid == vp.VendorId && vp.ProductId == ProductId)
   select new VendorModel
   {
       VendorId = vendor.Pkid,
       Name = vendor.Name,
       VendorCode = vendor.VendorCode,
       FacilityId = 0,
       ClientId = 0,
       Active = vendor.Active ?? false,
       UpdatedAt = vendor.UpdatedAt,
       DeletedAt = vendor.DeletedAt
   };
票数 1
EN

Stack Overflow用户

发布于 2020-10-30 02:37:03

您需要对产品进行分组,并检查是否有与代码匹配的产品

代码语言:javascript
复制
IQueryable<VendorModel> vendors = (from vendor in _context.Vendor
                               join vp in _context.VendorProduct on vendor.Pkid equals vp.VendorId into vpg
                               where vpg.Any(vp => vp.ProductId == ProductId)

                               select new VendorModel()
                               {
                                   VendorId = vendor.Pkid,
                                   Name = vendor.Name,
                                   VendorCode = vendor.VendorCode,
                                   FacilityId = 0,
                                   ClientId = 0,
                                   Active = vendor.Active ?? false,
                                   UpdatedAt = vendor.UpdatedAt,
                                   DeletedAt = vendor.DeletedAt
                               });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64597091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档