最近我有一个任务需要做如下的描述,我的问题是LINQ能够做到吗?
假设我有一组数据,每个数据由三列组成:a(int),b(int),c(int)
我想要做的是按a and b
对这些数据进行分组,对于每个不同的对(a,b)
,将相应的c
存储到单独的列表中。
例如:如果我有一组数据(a,b,c){(1,3,5), (2,4,6), (1,3,7), (2,4,8)}
,
我想将数据拆分为两个单独的列表,每个列表包含c
的值:
清单1(a = 1,b = 3):[5,7]
清单2(a = 2,b = 4):[6,8]
我所尝试的是按(a,b)
按数据分组/排序,并得到一个排序的数据列表,我当然可以使用任何循环来迭代数据集并将它们分成几个列表,只是想知道是否有一个更漂亮的解决方案,比如使用单个LINQ查询?
任何建议都很高兴!谢谢:))
答案 0 :(得分:1)
试试这个:
var result = data.GroupBy(x => new { x.a, x.b })
.Select(g => Tuple.Create
(
new List<int> { g.Key.a, g.Key.b },
new List<int>(g.Select(x => x.c))
)).ToList();
这是等价的查询表达式:
var result = (from x in data
group x by new { x.a, x.b } into g
select Tuple.Create(
new List<int> { g.Key.a, g.Key.b },
new List<int>(g.Select(x => x.c)))).ToList();