从另一个表中选择一个bool列
本文关键字:一个 bool 另一个 选择 | 更新日期: 2023-09-27 18:06:17
我有一个成功的查询,从连接表返回多条记录,并生成bool Selected值(如果另一个表中存在当前用户的记录)。
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;
}
我正试图编写另一个查询,检索一行,但也需要获得bool选择值,而不像上面那样将结果投射到类中。这是我试图接近的失败尝试。
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;
}
我试图生成的bool列如果为空(没有记录匹配)则为false,如果找到记录则为true。如果您需要模型的可视化,请参阅此链接
在这种情况下,因为我只想要一个额外的bool值显示在页面上,因为这是一个编辑页面,其中视图模型将不得不映射回域模型…对于单个bool列来说似乎工作量太大,所以我使用了一个单独的查询来填充ViewBag:)