如何用C# LINQ按含小数点分组排序EF查询结果?
Entity Framework LINQ 实现按是否含小数点分组排序
你需要先按是否包含小数点分组排序(带小数点的组靠前),再对每组内的元素按列值字符串排序,可以通过OrderBy结合ThenBy实现:
var sortedData = yourDbContext.YourEntitySet // 先按是否含小数点排序:含小数点的排在前面 .OrderBy(x => !x.Column.Contains(".")) // 再对同一分组内的元素按列值本身排序 .ThenBy(x => x.Column);
逻辑说明
OrderBy(x => !x.Column.Contains(".")):带小数点的元素,Contains(".")返回true,取反后为false;不带小数点的元素取反后为true。布尔值排序中false优先于true,因此带小数点的组会整体排在前面。ThenBy(x => x.Column):对每个分组内的元素,按列值的字符串顺序排序,满足组内排序需求。
用你提供的测试数据验证,最终会得到期望的结果:
6.16.30
6.16.40
7.15.20
6010
6020
7030
内容的提问来源于stack exchange,提问作者Jonas Mohammed
相关产品推荐
相关产品推荐

