C# 使用具有多个条件的Linq进行迭代时出现编译错误
我正在构建一个执行以下操作的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
- 遍历每个组
- 检查组中是否至少有一名学生具有
University=OPQ
- 确保同一组没有任何
Student=Adam
- 在每组拥有
的学生中获取第一项University=OPQ
(第2组)emit
(第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();