1

我有显示供应商成功的查询,但我想现在补充的是哪家厂商已经选择或者不列显示(显示为一个复选框列)。这些选择都存储在包含FK简档,并且选择他们用户名VendorsSelected表。因此,当当前用户查看供应商时,一些供应商会匹配而不是其他供应商。返回基于记录列在表FK

如何修改查询?注意:Where子句下面将完成只得到供应商,目前用户已经选择了,但我要的是与真/假(复选框)柱子上他们已经选择了每个厂商中显示的所有供应商。

public IEnumerable<BrowseVendorModel> BrowseVendors() 
{ 
    IQueryable<BrowseVendorModel> viewModel = _db.VendorProfiles 
     .Include("VendorsSelected") 
     .Select(s => new BrowseVendorModel 
     { 
      ProfileID = s.ProfileID, 
      Name = s.Name, 
      CompanyName = s.CompanyName, 
      City = s.City, 
      State = s.State, 
      DateCreated = s.DateCreated 
     }) 
     .Where(x => x.VendorsSelected.Select(s => s.UserName).Contains(HttpContext.Current.User.Identity.Name)) 
     .OrderBy(v => v.ProfileID); 

    return viewModel; 
} 

enter image description here

回答

2

属性Selectedboolean)添加到浏览模式:

public IEnumerable<BrowseVendorModel> BrowseVendors() 
{ 
    IQueryable<BrowseVendorModel> viewModel = _db.VendorProfiles 
     .Include("VendorsSelected") 
     .Select(s => new BrowseVendorModel 
     { 
      ProfileID = s.ProfileID, 
      Name = s.Name, 
      CompanyName = s.CompanyName, 
      City = s.City, 
      State = s.State, 
      DateCreated = s.DateCreated, 
      Selected = x.VendorsSelected.Select(s => s.UserName) 
         .Contains(HttpContext.Current.User.Identity.Name) 
     }) 
     .OrderBy(v => v.ProfileID); 

    return viewModel; 
} 
+0

OMG,我不知道你能做到这一点。我花了几年时间写SQL,但不得不重新学习LINQ方法。我要去哪里学习像你这样的LINQ忍者? :) THX – SQLGrinder 2013-03-21 22:32:19

+0

只要继续做我猜:) – 2013-03-21 22:37:53

+0

发布另一个LINQ忍者[问题](http://stackoverflow.com/questions/15671371/linq-to-entities-selecting-one-bool-column-from-另一个表)修改上述查询。 – SQLGrinder 2013-03-27 23:35:11