林克第一项

本文关键字:一项 林克 | 更新日期: 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不会出现多次。