我有一个包含不同原始数据类型的对象列表:
List<object> list = new List<object>() {
3, "cat", 4.1, 'a', 5, "dog", "horse", 9.1, 'd', 1
};
Run Code Online (Sandbox Code Playgroud)
我希望能够在上面的列表上运行 Linq 查询,将所有元素按数据类型和顺序分组为(字符串、整数、双精度、字符)(如果这有意义?)。就像是:
list = { "cat","dog", "horse", 3, 5, 1, 4.1, 9.1, 'a', 'd' }
Run Code Online (Sandbox Code Playgroud)
我尝试从
代码
lst
.GroupBy(x => x.GetType())
.Select(grp => grp.ToList())
.ToList()
.ForEach(group => group.ForEach(item => Console.WriteLine(item)));
Run Code Online (Sandbox Code Playgroud)
有效,但没有给出所需的输出。
输出
{ 3, 5, 1, "cat","dog", "horse",4.1, 9.1, 'a', 'd' }
Run Code Online (Sandbox Code Playgroud)
您可以按降序排列类型名称Select,它会给您所需的输出 - (字符串,整数,双精度,字符)项目
list.GroupBy(x => x.GetType())
.OrderByDescending(g => g.Key.Name)
.Select(grp => grp.ToList())
.ToList()
.ForEach(group => group.ForEach(Console.WriteLine));
Run Code Online (Sandbox Code Playgroud)
另一个选项是按IsPrimitive属性排序OrderBy(g => g.Key.IsPrimitive),对于您的特定数据,它也会提供所需的输出