Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按条目列出三个列表_C# - Fatal编程技术网

C# 按条目列出三个列表

C# 按条目列出三个列表,c#,C#,我只是想知道是否有可能通过输入来确定列表 List One Concat List Two Concat List Three Entry One -> Entry Two -> Entry Three Entry One -> Entry Two -> Entry Three Entry One -> Entry Two -> Entry Three

我只是想知道是否有可能通过输入来确定列表

 List One  Concat   List Two  Concat    List Three
Entry One   ->      Entry Two  ->       Entry Three 
Entry One   ->      Entry Two  ->       Entry Three 
Entry One   ->      Entry Two  ->       Entry Three 
我问这个问题的原因是我有三个列表,它们循环了我需要的程序不同部分的值。我需要一种方法,按照条目在三个列表中出现的顺序对其进行排序。循环每个列表的代码为

List<string> QualificationList = new List<string>();
            List<string> SubjectList = new List<string>();
            List<string> GradeList = new List<string>();

            foreach (XmlNode QualificationNode in GetQualification)
            {
                GetQualificationType = QualificationNode.InnerText;
                QualificationList.Add(GetQualificationType);
            }

            foreach (XmlNode SubjectNode in GetSubject)
            {
                GetSubjects = SubjectNode.InnerText;
                SubjectList.Add(GetSubjects);
            }

            foreach (XmlNode node in GetGrade)
            {
                GetGrades = node.InnerText;
                GradeList.Add(GetGrades);
            }

我只是想知道这是否可能,如果不可能的话,我怎样才能收集我需要的信息来正确地进行concat或stringbuilder。感谢您提供的任何帮助

您的代码可以简化为:

QualificationList.AddRange(GetQualification.Select(item => item.InnerText));
SubjectList.AddRange(GetSubject.Select(item => item.InnerText));
GradeList.AddRange(GetGrade.Select(item => item.InnerText));
使用会将您从循环中解救出来,并且方法会按文本出现的顺序返回文本。

我想您需要Zip:

这将为您提供一个具有三个属性的匿名类型:q资格、s主题和g等级。如果要将它们连接成一个字符串,只需使用“选择”将其投影:

如果需要,还可以用投影替换每个xxxList;这只会增加Linq语句的复杂性,并可能使调试更加困难:

var concatList = GetQualification.Select(node => node.InnerText)
                                 .Zip(GetSubject.Select(node => node.InnerText),
                                      (q,s) => new {q, s})
                                 .Zip(GetGrade.Select(node => node.InnerText),
                                      (qs, g) => new {qs.q, qs.s, qs.g})

你想用它们做什么?它们的长度一样吗?如果它们只是使用for循环,并且所有三个循环都列出了每次迭代,那么在这种情况下,扩展的代码在视觉上更具吸引力。。。此外,通过对大型数据集的个人测试,foreach循环通常更快
                                  .Select( qsg => string.Format("{0} {1} {2}", q, s, g);
var concatList = GetQualification.Select(node => node.InnerText)
                                 .Zip(GetSubject.Select(node => node.InnerText),
                                      (q,s) => new {q, s})
                                 .Zip(GetGrade.Select(node => node.InnerText),
                                      (qs, g) => new {qs.q, qs.s, qs.g})