我的数据库中有3个表:
我还在MVC 4中创建了一个包含所有表的ViewModel,但是当我试图在视图(.cshtml)中列出类别详细信息时,WHERE子句不能像我预期的那样工作。 我正在尝试不按键列出语言,而是按标题列出。
@foreach (var item in Model.lstCategoryDetails)
{
<tr>
<td>@item.Title</td>
<td>@Model.lstLanguages.Title.Where(x => x.ID == @item.LanguageID)</td>
<td>@item.Description</td>
</tr>
}
答案 0 :(得分:3)
Enumerable.Where
会返回另一个IEnumerable
,即使这只包含一个found
项。因此,请将.Where(
替换为.FirstOrDefault(
或.Single(
等。@
。Title
Language
属性
e.g。
@Model.lstLanguages.FirstOrDefault(x => x.ID == item.LanguageID).Title
请注意,如果找不到language
,您将获得NRE。
答案 1 :(得分:1)
你应该说
@Model.lstLanguages.Where(x => x.ID == @item.LanguageID).First().Title
您可以将'where,select etc ...'应用于列表,返回类型为Ienumerator。
当您申请'First()或FirstOrDefault()时,会返回您列表的元素类型。
表示exm。你有List<int> intList = (1,2,3,4,5,6).
并申请:
intList.where(p=>p == 4 || p== 5).FirstOrDefault();
作为整数类型返回给你'4'。