我在数据库名称 Guest 中有一个表,如下:
Guest1 Guest2 Guest3 Guest4
James
Tom
Jerry Steve Jones
Chris Luke
Pet Ron Rob James
我想要下面理想的表格,这样完整的客人列表可以出现在表格的顶部,而空值则像这样出现在最后
Guest1 Guest2 Guest3 Guest4
Pet Ron Rob James
Jerry Steve Jones
Chris Luke
Tom
James
在控制器中我正在做类似的事情:
var guestNames = await _db.Guest.ToListAsync();
return View(guestNames);
在视图中我有一个表标题并正在执行:
<thead>
<tr>
<th class="text-center">
Guest 1
</th>
<th class="text-center">
Guest 2
</th>
<th class="text-center">
Guest 3
</th>
<th class="text-center">
Guest 4
</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td class="text-center">
@Html.DisplayFor(modelItem => item.Guest1)
</td>
<td class="text-center">
@Html.DisplayFor(modelItem => item.Guest2)
</td>
<td class="text-center">
@Html.DisplayFor(modelItem => item.Guest3)
</td>
<td class="text-center">
@Html.DisplayFor(modelItem => item.Guest4)
</td>
</tr>
}
那么我如何在控制器中进行过滤以获得下面想要的结果?
Guest1 Guest2 Guest3 Guest4
Pet Ron Rob James
Jerry Steve Jones
Chris Luke
Tom
James
尝试这样的事情:
var guestNames = await _db.Guest
.OrderBy(g=>g.Guest1==null)
.ThenBy(g=>g.Guest2==null)
.ThenBy(g=>g.Guest3==null)
.ThenBy(g=>g.Guest4==null)
.ToListAsync();
return View(guestNames);