【问题标题】:c# Group and then Sort list of tuple <T1,T2,T3>c# 对元组 <T1,T2,T3> 的列表进行分组然后排序
【发布时间】:2016-12-19 08:33:56
【问题描述】:

我是 C# 新手,我想对我的 List&lt;Tuple&lt;int, string, int&gt;&gt; 集合进行排序

用户输入数据例如:

T1   T2   T3
1  abbc   3             
1  becky  5           
1  betty  56           
2  Olivia 6             
2  abbc   3            
2  becky  5           
3  Olivia 675

我希望排序列表看起来像;

 ID = 1 { abbc,3|becky,5|betty,56 }        
 ID = 2 { Olivia,6|abbc,3|becky,5 }          
 ID = 3 { Olivia,675 }

请帮助我真的卡住了:)

【问题讨论】:

  • 您可以创建一个继承自 List> 并实现 ISortable 的类。这样你就可以在你的新类上调用 Sort 方法
  • 您在排序的依据是什么?
  • @helpme - 根据您想要的输出,您似乎首先想要对结果进行分组,然后才进行排序。对吗?
  • @Tom - 请参阅 helpme 的说明 - 这不是该问题的重复

标签: c# linq list sorting tuples


【解决方案1】:

看起来你更想Group你的项目然后Order第一个int(Id):

List<Tuple<int, string, int>> data = new List<Tuple<int, string, int>>
{
    new Tuple<int, string, int>(1,"abbc",3),
    new Tuple<int, string, int>(1,"becky",5),
    new Tuple<int, string, int>(1,"betty",56),
    new Tuple<int, string, int>(2,"Olivia",6),
    new Tuple<int, string, int>(2,"abbc",3),
    new Tuple<int, string, int>(2,"becky",5),
    new Tuple<int, string, int>(3,"Olivia",675),
};

var result = data.GroupBy(item => item.Item1)
                 .Select(group => new { Id = group.Key, Values = group.Select(item => new { item.Item2, item.Item3 }).ToList() })
                 .OrderBy(item => item.Id).ToList();

【讨论】:

  • @helpme - 这对你有帮助吗?
  • 大声笑,我不能说 OP,但你用上面的评论让我很开心:)
  • @IvanStoev - 哈哈哈哈!让我自己笑了;P
  • @helpme - 这个问题还没有解决吗?我可以帮你吗?
猜你喜欢
  • 1970-01-01
  • 2020-01-09
  • 1970-01-01
  • 2015-07-15
  • 2021-03-10
  • 2011-12-03
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
相关资源
最近更新 更多