【发布时间】:2018-08-13 02:31:08
【问题描述】:
我正在尝试按其中一个字段对列表进行排序。
我在一个分组列表中有两个列表。第一个包含 Id,第二个包含计数。我成功地能够按 Id 对列表列表进行分组并重新格式化。
for (int i = 0; i < GroupedListofLists.Count; i++)
{
tempo_Id.Add(GroupedListofLists[i][0]);
tempo_count.Add(GroupedListofLists[i][1]);
}
GroupedListofLists.Clear();
GroupedListofLists.Add(tempo_Id);
GroupedListofLists.Add(tempo_count);
如果我打印出 GroupedListofLists,我将拥有不同的 ID (GroupedListofLists[0]),每个 ID 的计数都在第二个中 (GroupedListofLists [1])。
现在,当我尝试使用 lambda 表达式对该列表进行排序时,我遇到了问题。我尝试了这两种方法:
GroupedlistofLists.Sort( (a, b) => Convert.ToDouble(a[idx]).CompareTo(Convert.ToDouble(b[idx])));
与
GroupedlistofLists = GroupedlistofLists.OrderBy(x => Convert.ToDouble(x[idx])).ToList();
出现了问题。
在第一种方法中,无论我对变量 'idx' 使用什么值,都会为 a 分配 GroupedListofLists[0] 的值,为 b 分配 GroupedListofLists[1] 的值。
其次,无论我对变量“idx”使用什么值(0 或 1),x 都将始终包含 GroupedListofLists[0] 的值。哪个是 Id 值,我需要按 Count 对它们进行排序,所以 GroupedListofLists[1]。
我希望我很清楚。 提前谢谢你。
【问题讨论】:
-
请提供代码示例以及您分组的部分,如果您能列出并提供类定义,那就太好了。
-
这个
list到底是什么?就个人而言,我认为最好在这里编写并调用一个实际的比较方法......然后你完全控制发生的事情。 -
你好,我编辑了,这样更清楚,列表实际上是 GroupedListofLists。
标签: c# .net sorting lambda listobject