首页 > 解决方案 > 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 查询以按我想要的方式正确排序列表?

感谢您的任何建议或意见!

标签: c#listlinq

解决方案


推荐阅读