Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# 使用具有多个条件的Linq进行迭代时出现编译错误_C#_Linq - Fatal编程技术网

C# 使用具有多个条件的Linq进行迭代时出现编译错误

C# 使用具有多个条件的Linq进行迭代时出现编译错误,c#,linq,C#,Linq,我正在构建一个执行以下操作的Linq查询: 遍历每个组 检查组中是否至少有一名学生具有University=OPQ 确保同一组没有任何Student=Adam 在每组拥有University=OPQ的学生中获取第一项 输出 emit(第2组) 白色(第5组) 我尝试的 var results = StudentsList .GroupBy(x => x.GroupID) .Where(x=>x.Any(y=> y.Universi

我正在构建一个执行以下操作的Linq查询:

  • 遍历每个组
  • 检查组中是否至少有一名学生具有
    University=OPQ
  • 确保同一组没有任何
    Student=Adam
  • 在每组拥有
    University=OPQ
    的学生中获取第一项
输出

  • emit
    (第2组)
  • 白色
    (第5组)
我尝试的

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

                    return firstItem;
                }).ToList();

    foreach(var item in results)
        Console.WriteLine("Group:" + item.GroupID + " Student:" + item.Student +  " IsQualified:" + item.IsQualified);
我收到一个错误:

编译错误(第56行第22列): “System.Collections.Generic.IEnumerable”没有 包含“IsQualified”的定义,并且没有扩展方法 “IsQualified”接受类型为的第一个参数 “System.Collections.Generic.IEnumerable”可以是 找到(是否缺少using指令或程序集引用?)

我的代码

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

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

    // Group 2
    StudentsList.Add( new StudentInfo { Student="Donald", University="def", GroupID = 2, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Olivia", University="ggh", GroupID = 2, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Emity", University="OPQ", GroupID = 2, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Emma", University="OPQ", GroupID = 2, IsQualified=false} );
    StudentsList.Add( new StudentInfo { Student="Alan", University="OPQ", GroupID = 2, IsQualified=false} );

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

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

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

public class StudentInfo
{
  public string Student { get; set; }
  public string University { get; set; }
  public int GroupID { get; set; }
  public bool IsQualified {get; set;}
}
List StudentsList=new List();
//第一组
添加(新的StudentInfo{Student=“Gungun”,University=“cdf”,GroupID=1,IsQualified=false});
添加(newstudentinfo{Student=“John”,University=“abc”,GroupID=1,IsQualified=false});
添加(newstudentinfo{Student=“Jack”,University=“def”,GroupID=1,IsQualified=false});
添加(newstudentinfo{Student=“Peter”,University=“abc”,GroupID=1,IsQualified=false});
添加(newstudentinfo{Student=“Lemity”,University=“abc”,GroupID=1,IsQualified=false});
//第2组
添加(newstudentinfo{Student=“Donald”,University=“def”,GroupID=2,IsQualified=false});
添加(新的StudentInfo{Student=“Olivia”,University=“ggh”,GroupID=2,IsQualified=false});
添加(新的StudentInfo{Student=“Emity”,University=“OPQ”,GroupID=2,IsQualified=false});
添加(newstudentinfo{Student=“Emma”,University=“OPQ”,GroupID=2,IsQualified=false});
添加(新的StudentInfo{Student=“Alan”,University=“OPQ”,GroupID=2,IsQualified=false});
//第3组
添加(newstudentinfo{Student=“Adam”,University=“yub”,GroupID=3,IsQualified=false});
添加(新的StudentInfo{Student=“Jacob”,University=“OPQ”,GroupID=3,IsQualified=false});
添加(newstudentinfo{Student=“Matthew”,University=“OPQ”,GroupID=3,IsQualified=false});
添加(新的StudentInfo{Student=“Saint”,University=“abc”,GroupID=3,IsQualified=false});
添加(新的StudentInfo{Student=“Joshua”,University=“qer”,GroupID=3,IsQualified=false});
添加(新的StudentInfo{Student=“Aubrey”,University=“fef”,GroupID=3,IsQualified=false});
//第4组
添加(新的StudentInfo{Student=“Caleb”,University=“DEF”,GroupID=4,IsQualified=false});
添加(新的StudentInfo{Student=“Anna”,University=“ABC”,GroupID=4,IsQualified=false});
添加(新的StudentInfo{Student=“Chill”,University=“GHI”,GroupID=4,IsQualified=false});
添加(新的StudentInfo{Student=“Alexis”,University=“JKL”,GroupID=4,IsQualified=false});
添加(新的StudentInfo{Student=“Zoe”,University=“MNO”,GroupID=4,IsQualified=false});
//第5组
添加(新的StudentInfo{Student=“Dylan”,University=“PQR”,GroupID=5,IsQualified=false});
添加(新的StudentInfo{Student=“White”,University=“OPQ”,GroupID=5,IsQualified=false});
公共班级学生信息
{
公共字符串Student{get;set;}
公共字符串{get;set;}
public int GroupID{get;set;}
公共bool是限定的{get;set;}
}

首先,您应该确保组中不包含任何
Student==“Adam”

其次,您应该确保组中至少包含一个
大学==“OPQ”

最后,使用
大学==“OPQ”

您的错误

  • x.Any(y=>y.Student!=“Adam”)
    应该是
    !x、 任何(y=>y.学生==“亚当”)
  • var firstItem=g.Where(x=>x.University==“OPQ”)应该是
    var firstItem=g.First(x=>x.University==“OPQ”)

  • 我计划在
    中使用多个条件。选择
    子句(例如:
    firstItem
    otherItems
    someOtherItems
    )。作为
    返回第一项
    只返回第一个项目,而不是
    其他项目
    其他项目
    ,有没有办法摆脱
    返回第一个项目
    或可能用更好的问题替换它?您也可以使用来实现它,而不是
    .Select()
    。您可以创建一个新问题,然后标记我。我愿意帮助你,谢谢。这是:
    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();