0
在我的MVC5應用程序中,我試圖通過簡單的查詢爲選擇列表框填充SelectListItems的IEnumerable,並通過簡單的查詢將「select」屬性設置爲true。代碼如下:MVC5:通過LINQ查詢將「Selected」屬性設置爲true
GroupActivity groupActivity = await db.GroupActivities.FindAsync(id);
ICollection<ApplicationUser> attendees = groupActivity.Attendees;
IEnumerable<SelectListItem> items = db.Users.Select(c => new SelectListItem
{
Value = c.Id.ToString(),
Text = c.LastName + ", " + c.FirstName,
Selected = attendees.Contains(c)
})
.OrderBy(q => q.Text);
ViewBag.Userlist = items;
在調試器中,我驗證了與會者確實正在返回預期的ApplicationUser集合。我還測試了這款是否適合個人用戶提供這樣的事情,我也得到預期的結果布爾:
ApplicationUser yes = db.Users.First(n => n.Id == 1);
var x = groupActivity.Attendees.Contains(yes);
ApplicationUser no = db.Users.First(n => n.Id == 2);
var y = groupActivity.Attendees.Contains(no);
這個工作剛找到當ID爲1的用戶是與會者但ID爲2的用戶不。
我的代碼在沒有與會者的情況下也可以正常工作。但是,即使有一個與會者出現錯誤:「無法創建類型爲'SdNet.Models.ApplicationUser'的常量值,只有基本類型或枚舉類型在此上下文中受支持。」
我最好的猜測是該表達式沒有返回包含查詢的布爾值,但我不知道爲什麼會這樣。任何幫助你可以提供將不勝感激。
謝謝!
由於@IvanStoev,完美地工作。 – ChemProfMatt