繁体   English   中英

如何对列值排序列表

[英]How to sort a list on a column value

我试图在两种情况下在LINQ中List<T>进行排序

  1. 如果列表的MasterBenefitCode属性值为"QLBEN" 它应该排在最前面
  2. 其次是对所有利益的利益Name

我正在尝试以下代码,

employerBenefits
  .OrderBy(x => x.MasterBenefitCode == "QLBEN")
  .ThenBy(x => x.Name)
  .ToList();

请让我知道我在这里想念什么。 是否无法在OrderBy()添加比较运算符

在比较Boolean我们有false < true (这很自然: 0 < 1 )。 因此,我们必须按降序排序( true位于顶部):

var result = employerBenefits
  .OrderByDescending(x => x.MasterBenefitCode == "QLBEN")
  .ThenBy(x => x.Name)
  .ToList();

编辑:ThenBy相同,应将其.ThenByDescending.ThenByDescending (请参见下面的评论):

 var result = employerBenefits
   .OrderByDescending(x => x.MasterBenefitCode == "QLBEN") 
   .ThenByDescending(x => x.MasterBenefitCode == "QLBEF")
   .ThenBy(x => x.Name) 
   .ToList();

另一个选项(包括您对辅助MasterBenefitCode的评论),

 var result = employerBenefits
                        .OrderByDescending(x => x.MasterBenefitCode == "QLBEN" ? 3:x.MasterBenefitCode == "QLBEF"?2:1)
                        .ThenBy(x => x.Name)
                        .ToList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM