林克第一项
本文关键字:一项 林克 | 更新日期: 2023-09-27 18:19:47
我有一个Linq语句,它将三个list
连接在一起:
var FinshedResults = QualificationList.Zip(SubjectList, (x, y) => x + y).Zip(GradeList, (x, y) => x + y);
这给我的结果是:
A Level - Test 1 (A*) A Level - Test 2 (A) A Level - Test 3 (B) A Level - Test 4 (C) A Level - Test 5 (D) A Level - Test 6 (E) A Level - Test 6 (E) A Level - Test 7 (F)
A级存储在QualificationList
中,我只是想知道我们是否可以这样做,A级打印一次,其余的都有测试1等。所以输出会更像;
A Level - Test 1 (A) Test 2 (A) Test 3 (B) Test 4 (C) Test 5 (D) Test 6 (E) Test 6 (E) Test 7 (F)
是否可以使QualificationList
只打印一次?还是必须在循环中处理?谢谢你的建议。
试试这样的东西:
QualificationList
.GroupBy(x => x)
.SelectMany(g => new[] { g.Key }.Concat(Enumerable.Repeat("", g.Count() - 1))
.Zip(SubjectList, (x, y) => x + y)
.Zip(GradeList, (x, y) => x + y);
我假设QualificationList
是一个字符串列表。此查询对QualificationList
进行简单分组,然后为每个组返回一个元素序列,其中第一个元素是Key
(例如a级),其余元素是空字符串。然后像您一样使用Zip
,唯一的区别是其余元素用空字符串连接,因此A Level
不会出现多次。