【问题标题】:Linq Display Sort lidtLinq 显示排序列表
【发布时间】:2016-07-22 05:32:47
【问题描述】:

我有一个车辆模型

  • 车辆 ID
  • 车辆名称

数据库中的列表

  • 奥迪
  • 现代
  • 丰田
  • 马塞德斯
  • 其他
  • 准确度
  • 斯巴鲁
  • 本田

我过去曾使用过类似的东西。对列表的顺序进行排序以在视图中表示。

@{var veh = (IEnumerable)ViewBag.Vehicles; veh = veh.OrderByDescending(v => v.Name != "Other").ThenBy(v => v.Name);}

现在我想按以下顺序显示结果。

  • 奥迪
  • 现代
  • 马塞德斯
  • 丰田
  • 准确度
  • 斯巴鲁
  • 本田
  • 其他

按“其他”之前的列表排序,然后按字母顺序排列左侧列表。最后加上“其他”

我希望我能解释得更好。任何帮助深表感谢。谢谢

【问题讨论】:

  • 之前之后“其他”是什么意思?基于什么 - VehicleID 或?
  • 基于 VehicleName
  • 我不明白。根据VehicleName,你怎么知道哪个是before,哪个是after“Other”?在数据库中查看您的列表。既然不按名称排序,那它是如何排序的呢?一定有其他属性什么的。
  • @IvanStoev 谢谢。 :)
  • 大声笑,不客气 :)

标签: html linq listview


【解决方案1】:
@{var veh = (IEnumerable<Vehicle>)ViewBag.Vehicles; veh = veh.OrderByDescending(v => v.Name != "Other").ThenBy(v => Convert.ToInt32(v.IsActive)==0).ThenBy(v=>v.Name);}
@foreach (Vehicle v in veh)
{
<div class="col-xs-4">
    <input type="checkbox" name="VehicleId" value="@v.VehicleId" id="@v.VehicleId" />
    <span for="@v.VehicleId">@v.Name</span><br />
</div>

                        }

【讨论】:

    【解决方案2】:

    这通过在查询中使用外部变量有点作弊,但它有效..

    var cars = new string[] {"Audi", "Hyndai", "Toyota", "Marcedes",
                             "Other", "Accura", "Subaru", "Honda"};
    
    int seen = 0;
    var list =  from car in cars
                let order = (car=="Other") ? seen=2 : (seen==2 ? 1 : 0)
                orderby order, car
                select car;
    
    list.Dump();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 1970-01-01
      • 2015-12-08
      相关资源
      最近更新 更多