首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq显示排序lidt

Linq显示排序lidt
EN

Stack Overflow用户
提问于 2016-07-21 15:57:58
回答 2查看 40关注 0票数 1

我有个车模型

  • VehicleID
  • VehicleName

数据库中的列表

  • 奥迪
  • 欣岱
  • 丰田
  • 马塞德斯
  • 其他
  • Accura
  • 斯巴鲁
  • 本田

我以前也用过这样的东西。若要排序视图中要表示的列表的顺序,请执行以下操作。

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

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

  • 奥迪
  • 欣岱
  • 马塞德斯
  • 丰田
  • Accura
  • 斯巴鲁
  • 本田
  • 其他

按“其他”之前的列表顺序排序,并按字母顺序排列左列表。最后与“其他人”

我希望我能解释得更好。任何帮助都是非常感谢的。谢谢

EN

回答 2

Stack Overflow用户

发布于 2016-07-21 19:45:01

代码语言:javascript
复制
@{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>

                        }
票数 1
EN

Stack Overflow用户

发布于 2016-07-21 21:32:47

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

代码语言:javascript
复制
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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38508953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档