C# Linq第一项

C# Linq第一项,c#,C#,我有一个Linq语句,它将三个列表连接在一起: 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 (

我有一个Linq语句,它将三个
列表连接在一起:

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级存储在
资格列表中
我只是想知道我们是否可以将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
,然后返回每个组的元素序列,其中第一个元素是
键(例如级别),其余为空字符串。然后像您那样只使用
Zip
,唯一的区别是其余元素用空字符串连接,这样
A Level
不会出现多次。

资格证书如何与成绩关联?似乎您在这里所做的只是将字符串附加在一起。请添加更多详细信息。你正在使用一些只有你自己清楚的思维捷径。列表不会打印,您所做的看起来也不像“列表串联”。演示如何使用此代码以及输入的数据。在循环执行linq语句时,字符串生成器会附加这些数据FinshedResults@willa不要用以下文字描述代码:)显示代码。您测试过此代码吗?它没有产生正确的结果。@James没有,我没有,它产生了什么?一个单一的结果-
LevelTest 1(A)
事实上,我很抱歉我的测试是错误的。它或多或少给出了正确的结果(第一个结果仍然是前面提到的结果)。