【发布时间】:2020-04-18 07:59:56
【问题描述】:
我有一个包含不同原始数据类型的对象列表:
List<object> list = new List<object>() {
3, "cat", 4.1, 'a', 5, "dog", "horse", 9.1, 'd', 1
};
我希望能够在上述列表上运行 Linq 查询,该查询按数据类型和顺序将所有元素分组为(字符串、整数、双精度、字符)(如果有意义?)。比如:
list = { "cat","dog", "horse", 3, 5, 1, 4.1, 9.1, 'a', 'd' }
我试过了
Using Linq to group a list of objects into a new grouped list of list of objects
代码
lst
.GroupBy(x => x.GetType())
.Select(grp => grp.ToList())
.ToList()
.ForEach(group => group.ForEach(item => Console.WriteLine(item)));
有效,但没有提供所需的输出。
输出
{ 3, 5, 1, "cat","dog", "horse",4.1, 9.1, 'a', 'd' }
【问题讨论】:
-
你的表达式一般都有效,你想要哪个输出?也许只是按类型订购?
-
基本上你想将你的列表聚合成一个列表。当然,ForEach 表明你掌握了正确的要点。
-
@PavelAnikhouski 我想将输出重新排序为 (string,integer,double,character) 而不是 (integer , string, double , character)
-
所以你需要使用自定义比较器并使用
Sort -
如果 (string,integer,double,character) 故意按类型名称降序排序,
list.OrderByDescending(x => x.GetType().Name)应该这样做