c# - LINQ 顺序字符串列表,按起始字符,然后按整个字符串
问题描述
我有一个看起来像这样的数据列表:
我想要做的是使用 LINQ 按选项代码排序,然后按以“W”开头的任何框大小,然后按其余框大小排序。有序列表应该看起来与上面显示的完全一致。
我尝试过的1:
var check = _routeManagementService.GetAllOptionsWithBoxSizes().Select(x => new OptionDataViewModel
{
Id = x.Id,
BoxSizeId = x.BoxSizeId,
Name = x.Name,
OptionCode = x.OptionCode,
BoxSize = x.BoxSize,
Time = x.Time
}).OrderBy(x => x.OptionCode).ThenBy(x => x.BoxSize).ToList();
我试过的2:
var check = _routeManagementService.GetAllOptionsWithBoxSizes().Select(x => new OptionDataViewModel
{
Id = x.Id,
BoxSizeId = x.BoxSizeId,
Name = x.Name,
OptionCode = x.OptionCode,
BoxSize = x.BoxSize,
Time = x.Time
}).OrderBy(x => x.OptionCode)
.ThenBy(x => x.BoxSize.StartsWith("W"))
.ThenBy(x => x.BoxSize).ToList();
在任何一种情况下,初始选项代码排序都会起作用,但它仍然会先显示包含 F 的框大小,然后再显示包含 W 的框大小。如何编写此 linq 查询以按我想要的方式正确排序列表?
感谢您的任何建议或意见!
解决方案
推荐阅读
- amazon-web-services - DateTime 作为 DynamoDB 中的字符串,它将如何将 DateTime 属性保持为范围键?
- javascript - 边距底部不适用于包含三个浮动 div 的 div
- reactjs - 当我从多行文本字段发布数据时保留新行的最佳方法
- mysql - 具有子句 MySql 中的嵌套聚合函数
- node.js - 无法将“文档”对象作为参数传递给 page.exposeFunction
- python - 为什么要先将可迭代对象转换为迭代器?
- webpack - 如何从 Webpack Dev Server 热重载中的 URL 中删除端口?
- r - 从数据框中删除单元格小于或大于 R 中值的行
- json - 使用 Google Sheets API 创建持久值的方法有哪些?
- react-native - 当反应本机应用程序在后台/设备被锁定时,如何防止socket.io断开连接?