C# 将列表列表转换为一个列表
我有一个Linq查询,它更新每个条件组中的第一个项,如下所示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
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”
(第2组)。如果不存在,则忽略(第5组)Course=“HR”
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
类型。boolchangeAny
byWhere
和updateIsQualified
中没有IsQualified属性,因为使用ForEach()
方法是邪恶的。只需使用foreach的loop@ASh我删除了.ToList(),现在出现一个错误:“System.Collections.Generic.IEnumerable”不包含“ForEach”的定义,并且没有接受第一个参数的扩展方法“ForEach”。只需使用ForEach
loop@YoKidYo,让我按照Ashi的建议更新答案,如果我们在GroupBy(x=>x.GroupID)
行中使用字母x
,我们是否也必须在中使用相同的字母?使用同一个字母是否有特定的用途,或者我们可以使用我们选择的任何字母?我们可以使用我们选择的任何字母