gpt4 book ai didi

c# - 具有不同类型值的 OrderBy 列表

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

我有多种类型的列表。类似的东西

List<object> list = new List<object>() { 11.21, 323, 4, 3221, 221, 2, "asd" };
var qu = list.OrderBy((o) => o);
qu.ToList().ForEach((e) => Console.WriteLine(e)); // throws exception

抛出的异常是“对象必须是 Int32 类型。”

如何编写 Linq 来对这样的列表进行排序。

最佳答案

这是我写过的最疯狂的 LINQ 查询之一......

var qu = list.Select(x =>
{
decimal? d;
try
{
d = Convert.ToDecimal(x);
}
catch (FormatException)
{
d = null;
}

return new { v = x, d, s = x.ToString() };
}).GroupBy(x => x.d.HasValue)
.Select(g =>
g.Key
? g.OrderBy(x => x.d.Value).Select(x => x.v)
: g.OrderBy(x => x.s).Select(x => x.v))
.SelectMany(x => x)
.ToList();

首先返回所有数值(使用其值排序),然后使用标准字符串比较排序所有字符串。

关于c# - 具有不同类型值的 OrderBy 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21248687/

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