【发布时间】:2020-02-18 20:39:54
【问题描述】:
我正在构建一个执行以下操作的 Linq 查询:
- 遍历每个组
- 检查小组是否包含至少一名
University= OPQ的学生 - 确保同一组没有任何
Student= Adam。 - 获得
University= OPQ的每组学生中的第一项。
输出
-
Emity(第 2 组) -
White(第 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;}
}
【问题讨论】: