Linq 查询在 asp net core mvc 中最后过滤空值

问题描述 投票:0回答:1

我在数据库名称 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
c# asp.net-mvc linq asp.net-core
1个回答
0
投票

尝试这样的事情:

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);
© www.soinside.com 2019 - 2024. All rights reserved.