gpt4 book ai didi

c# - Lambda 如何按列表升序对元素重新排序并将空值放在后面?

转载 作者:行者123 更新时间:2023-11-30 19:16:42 24 4
gpt4 key购买 nike

说我有 ListA={null,3,2,null}

ListA.OrderBy(x=>x.ID) //would return me null,null,2,3

如果我的目标是得到2,3,null,null,目前我只能想到把null item抽出来,手动pump到后面。

是否有一种干净的方法可以返回 2,3,null,null

最佳答案

您可以使用 OrderByDescending + ThenBy (假设它是一个 List<int?> ):

var orderedList = ListA
.OrderByDescending(x => x.HasValue)
.ThenBy(x => x);

x.HasValue返回 truefalse其中 true高于false .这就是我使用 OrderByDescending 的原因.

如果你想对原始列表进行排序,我会使用 List.Sort 自定义 Compaison<T>对待null作为最高值:

ListA.Sort((a1, a2) => (a1 ?? int.MaxValue).CompareTo(a2 ?? int.MaxValue));

这样效率更高,因为它不需要创建新列表。

关于c# - Lambda 如何按列表升序对元素重新排序并将空值放在后面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22142976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com