gpt4 book ai didi

c# - 按字符串属性对对象进行排序,最后为空字符串

转载 作者:行者123 更新时间:2023-12-02 09:44:08 25 4
gpt4 key购买 nike

我有一个对象数组,其中所有对象都包含字符串属性。我想按字符串属性按字母顺序对对象进行排序,使具有空字符串属性的对象位于列表末尾。目前我有这个:

switches = switches.OrderBy(n => n.GetCurrentUser()).ToArray();

问题在于它将空字符串放在列表顶部。如何将带有值(按字母顺序排序)的字符串的对象放在顶部,将带有空字符串的对象放在底部?

最佳答案

您可以使用:

switches = switches
.Select(n => new { TheObject = n, User = n.GetCurrentUser() })
.OrderBy(x => String.IsNullOrEmpty(x.User) ? 1 : 0)
.ThenBy(x => x.User)
.Select(x => x.TheObject)
.ToArray();

这将首先构建两个组,一个包含空用户,另一个包含其他组。 OrderBy 会将它们移动到末尾,因为 1 大于 0。如果您希望它们位于顶部,请使用 OrderByDescending

然后我使用 ThenBy 按字母顺序排序,这仅对非空用户有意义。

关于c# - 按字符串属性对对象进行排序,最后为空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52869186/

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