Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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#_Arrays_List_Linq - Fatal编程技术网

C# 将列表列表转换为一个列表

C# 将列表列表转换为一个列表,c#,arrays,list,linq,C#,Arrays,List,Linq,我有一个Linq查询,它更新每个条件组中的第一个项,如下所示 var results = StudentsList.GroupBy(x => x.GroupID) .Where(g => !g.Any(p => p.Student == "Adam") && g.Any(x => x.University == "OPQ")) .Select(g => { var firstI

我有一个Linq查询,它更新每个条件组中的第一个项,如下所示

var results = StudentsList.GroupBy(x => x.GroupID)
    .Where(g => !g.Any(p => p.Student == "Adam") && g.Any(x => x.University == "OPQ"))
    .Select(g => 
            {
                var firstItem = g.First(x => x.University == "OPQ");
                firstItem.IsQualified = true;

                return firstItem;
            }).ToList();
在保留原有功能的同时,我还想-

  • 如果存在,请为与
    大学!=“OPQ”
    Course=“HR”
    (第2组)。如果不存在,则忽略(第5组)
输出

Group:2 Student:Donald IsQualified:True
Group:2 Student:Silver IsQualified:True
Group:2 Student:Emity IsQualified:True
Group:5 Student:White IsQualified:True
  • 唐纳德、西尔弗、埃米蒂(均为第2组)和怀特(第5组)
我尝试的

就在
“firstItem.IsQualified=true;”
行下方,我添加了-

var otherItems=g.Any(x=>x.University != "OPQ" && x.Course =="HR");
otherItems.IsQualified= true;
我的代码

    List<StudentInfo> StudentsList = new List<StudentInfo>();

    // Group 1
    StudentsList.Add( new StudentInfo { Student="Gungun", University="cdf", Course="GD", GroupID = 1, IsQualified=false});
    StudentsList.Add( new StudentInfo { Student="John", University="abc", Course="ACC", GroupID = 1, IsQualified=false});
    StudentsList.Add( new StudentInfo { Student="Jack", University="def", Course="CS", GroupID = 1, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Peter", University="abc", Course="GD", GroupID = 1, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Lemity", University="abc", Course="CS", GroupID = 1, IsQualified=false} );

    // Group 2
    StudentsList.Add( new StudentInfo { Student="Donald", University="def", Course="HR",GroupID = 2, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Olivia", University="ggh", Course="RC",GroupID = 2, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Silver", University="tcs", Course="HR",GroupID = 2, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Carl", University="yyz", Course="AC",GroupID = 2, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Emity", University="OPQ", Course="AC",GroupID = 2, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Emma", University="OPQ", Course="GD", GroupID = 2, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Alan", University="OPQ", Course="GD", GroupID = 2, IsQualified=false} );

    // Group 3
    StudentsList.Add( new StudentInfo { Student="Adam", University="yub", Course="CS", GroupID = 3, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Jacob", University="OPQ", Course="AC",GroupID = 3, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Matthew", University="OPQ", Course="HR", GroupID = 3, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Saint", University="abc", Course="MNGT",  GroupID = 3, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Joshua", University="qer", Course="MNGT",  GroupID = 3, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Aubrey", University="fef", Course="MNGT",  GroupID = 3, IsQualified=false} );

    // Group 4
    StudentsList.Add( new StudentInfo { Student="Caleb", University="DEF", Course="HR", GroupID = 4, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Anna", University="ABC", Course="HR", GroupID = 4, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Chill", University="GHI", Course="GD", GroupID = 4, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Alexis", University="JKL", Course="CS", GroupID = 4, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Zoe", University="MNO", Course="MNGT", GroupID = 4, IsQualified=false} );

    // Group 5
    StudentsList.Add( new StudentInfo { Student="Dylan", University="PQR", Course="ACC", GroupID = 5, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="White", University="OPQ", Course="CE", GroupID = 5, IsQualified=false} );

public class StudentInfo
{
  public string Student { get; set; }
  public string University { get; set; }
  public string Course { get; set; }
  public int GroupID { get; set; }
  public bool IsQualified {get; set;}
}
List StudentsList=new List();
//第一组
添加(新的StudentInfo{Student=“Gungun”,University=“cdf”,Course=“GD”,GroupID=1,IsQualified=false});
添加(新的StudentInfo{Student=“John”,University=“abc”,Course=“ACC”,GroupID=1,IsQualified=false});
添加(新的StudentInfo{Student=“Jack”,University=“def”,Course=“CS”,GroupID=1,IsQualified=false});
添加(新的StudentInfo{Student=“Peter”,University=“abc”,Course=“GD”,GroupID=1,IsQualified=false});
添加(新的StudentInfo{Student=“Lemity”,University=“abc”,Course=“CS”,GroupID=1,IsQualified=false});
//第2组
添加(新的StudentInfo{Student=“Donald”,University=“def”,Course=“HR”,GroupID=2,IsQualified=false});
添加(新的StudentInfo{Student=“Olivia”,University=“ggh”,Course=“RC”,GroupID=2,IsQualified=false});
添加(新的StudentInfo{Student=“Silver”,University=“tcs”,Course=“HR”,GroupID=2,IsQualified=false});
添加(新的StudentInfo{Student=“Carl”,University=“yyz”,Course=“AC”,GroupID=2,IsQualified=false});
添加(新的StudentInfo{Student=“Emity”,University=“OPQ”,Course=“AC”,GroupID=2,IsQualified=false});
添加(新的StudentInfo{Student=“Emma”,University=“OPQ”,Course=“GD”,GroupID=2,IsQualified=false});
添加(新的StudentInfo{Student=“Alan”,University=“OPQ”,Course=“GD”,GroupID=2,IsQualified=false});
//第3组
添加(新的StudentInfo{Student=“Adam”,University=“yub”,Course=“CS”,GroupID=3,IsQualified=false});
添加(新的StudentInfo{Student=“Jacob”,University=“OPQ”,Course=“AC”,GroupID=3,IsQualified=false});
添加(新的StudentInfo{Student=“Matthew”,University=“OPQ”,Course=“HR”,GroupID=3,IsQualified=false});
添加(新的StudentInfo{Student=“Saint”,University=“abc”,Course=“MNGT”,GroupID=3,IsQualified=false});
添加(新的StudentInfo{Student=“Joshua”,University=“qer”,Course=“MNGT”,GroupID=3,IsQualified=false});
添加(新的StudentInfo{Student=“Aubrey”,University=“fef”,Course=“MNGT”,GroupID=3,IsQualified=false});
//第4组
添加(新的StudentInfo{Student=“Caleb”,University=“DEF”,Course=“HR”,GroupID=4,IsQualified=false});
添加(新的StudentInfo{Student=“Anna”,University=“ABC”,Course=“HR”,GroupID=4,IsQualified=false});
添加(新的StudentInfo{Student=“Chill”,University=“GHI”,Course=“GD”,GroupID=4,IsQualified=false});
添加(新的StudentInfo{Student=“Alexis”,University=“JKL”,Course=“CS”,GroupID=4,IsQualified=false});
添加(新的StudentInfo{Student=“Zoe”,University=“MNO”,Course=“MNGT”,GroupID=4,IsQualified=false});
//第5组
添加(新的StudentInfo{Student=“Dylan”,University=“PQR”,Course=“ACC”,GroupID=5,IsQualified=false});
添加(新的StudentInfo{Student=“White”,University=“OPQ”,Course=“CE”,GroupID=5,IsQualified=false});
公共班级学生信息
{
公共字符串Student{get;set;}
公共字符串{get;set;}
公共字符串课程{get;set;}
public int GroupID{get;set;}
公共bool是限定的{get;set;}
}
您能试试这个吗:

        var otherItems = StudentsList.Where(x => x.University != "OPQ" && x.Course == "HR");
        foreach (var otherItem in otherItems)
        {
            otherItem.IsQualified = true;
        }

除了
.Select()
,您还可以使用来实现它

    var results = StudentsList.GroupBy(x => x.GroupID)
                              .Where(g => !g.Any(p => p.Student == "Adam") && g.Any(x => x.University == "OPQ"))
                              .SelectMany(g => 
                                    {
                                        var firstItem = g.First(x => x.University == "OPQ");
                                        firstItem.IsQualified = true;

                                        var otherItems = g.Where(x => x.University != "OPQ" && x.Course == "HR")
                                                          .Select(z => 
                                                                  {
                                                                      var item = z;
                                                                      item.IsQualified = true;
                                                                      return item;
                                                                  }).ToList();
                                        otherItems.Add(firstItem);
                                        return otherItems;
                                    }).ToList();
输出

Group:2 Student:Donald IsQualified:True
Group:2 Student:Silver IsQualified:True
Group:2 Student:Emity IsQualified:True
Group:5 Student:White IsQualified:True

Course=“GD”,Course=“ACC”-(第13行,第90列)成员“Course”的重复初始化是不言自明的。很抱歉标记。我已经删除了它。修复后,我现在得到编译错误(第67行,第18列):“bool”不包含“IsQualified”的定义,并且没有扩展方法“IsQualified”接受类型为“bool”的第一个参数;otherItems.IsQualified=true-变量
其他项
具有
bool
类型。boolchange
Any
by
Where
和update
IsQualified
中没有IsQualified属性,因为使用
ForEach()
方法是邪恶的。只需使用foreach的
loop@ASh我删除了.ToList(),现在出现一个错误:“System.Collections.Generic.IEnumerable”不包含“ForEach”的定义,并且没有接受第一个参数的扩展方法“ForEach”。只需使用
ForEach
loop@YoKidYo,让我按照Ashi的建议更新答案,如果我们在
GroupBy(x=>x.GroupID)
行中使用字母
x
,我们是否也必须在
中使用相同的字母?使用同一个字母是否有特定的用途,或者我们可以使用我们选择的任何字母?我们可以使用我们选择的任何字母