2013-03-27 98 views
1

我有一个成功的查询,它从一个连接表中返回多个记录,并且还生成一个bool Selected值(如果另一个表中的当前用户存在一条记录)。从另一个表中选择一个bool列

public IEnumerable<BrowseVendorModel> SearchVendors(CustomSearchModel criteria) 
{ 
    var query = _db.VendorProfiles 
        .Include("VendorCategories") 
        .Include("VendorsSelected") 
        .Select(s => new BrowseVendorModel 
         { 
          ProfileID = s.ProfileID, 
          Name = s.Name, 
          CompanyName = s.CompanyName, 
          City = s.City, 
          State = s.State, 
          DateCreated = s.DateCreated, 
          // gets bool for selected vendors for current user 
          Selected = s.VendorsSelected.Select(vs => vs.UserName).Contains(HttpContext.Current.User.Identity.Name), 
          VendorsSelected = s.VendorsSelected, 
          VendorCategories = s.VendorCategories 
         }) 
        .OrderBy(x => x.DateCreated); 
    return query; 
} 

我想写另一查询retreives一行还需要获得布尔值选择不突出成果转化为类似上面的类。这是我未能接近的失败尝试。

public VendorProfile GetVendor(String id) 
{ 
    Guid pid = Guid.Parse(id); 
    var viewModel = _db.VendorProfiles 
     .Include("VendorCategories.ProductServiceCategory") 
     .Include("VendorsSelected") 
     .Select(s => new { 
      VendorProfiles = s, 
      Selected = s.VendorsSelected.Select(vs => vs.UserName).Contains(HttpContext.Current.User.Identity.Name) 
     }) 
     .Where(s => s.VendorProfiles.ProfileID == pid); 
    return viewModel; 
} 

这个布尔列我想如果产生空(没有记录匹配)和真如果找到记录会是假的。看到这个link如果你需要一个可视化模型

+0

那么什么是不工作在第二个查询? – abatishchev 2013-03-27 23:43:16

+0

@abatishchev这只是不正确的方式来编写查询,我不知道如何处理它。也许我必须把它投影到一个自定义的viewmodel中才能使用它,但是希望不要。 – SQLGrinder 2013-03-27 23:49:42

+0

请详细说明。 – abatishchev 2013-03-28 00:05:06

回答

0

。在这种情况下,因为我只想要一个额外的布尔值,显示在页面上,因为这是映射在视图模型将有一个编辑页面回域模型...看起来像一个单一的bool列太多的工作,所以我去了一个单独的查询,填充ViewBag :)

相关问题