Restituisce la colonna in base al record nella tabella FK

Ho una query di successo per la visualizzazione dei fornitori, ma quello che volevo aggiungere ora è una colonna che mostra quali venditori sono stati selezionati o meno (visualizzati come una colonna di caselle di controllo). Queste selezioni sono memorizzate nella tabella VendorsSelected che contiene FK ProfileID e UserName che le ha selezionate. Pertanto, quando l’utente corrente visualizza i fornitori, ci saranno corrispondenze per alcuni fornitori e non per altri.

Come modifico la query? Nota la clausola Where riportata di seguito otterrà solo i fornitori selezionati dall’utente corrente, ma quello che voglio è che tutti i fornitori vengano visualizzati con la colonna true / false (checkbox) per ogni fornitore che hanno selezionato.

public IEnumerable BrowseVendors() { IQueryable 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; } 

inserisci la descrizione dell'immagine qui

Aggiungi una proprietà Selected ( boolean ) al modello di vista:

 public IEnumerable BrowseVendors() { IQueryable 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; }