我有一些数据文件:
data1.txt:
SchoolAdress1
Surname1;10
Surname2;7
data2.txt:
SchoolAdress2
Surname3;9
Surname4;6
data3.txt:
SchoolAdress3
Surname5;10
Surname6;6
并创建以下类:
class Pupil
{
public string Surname {get; set;}
public int Grade {get; set;}
...
}
我的收藏是:
List<Tuple<string, List<Pupil>>> data;
元组的项目1是学校地址。
我需要使用LINQ List<Tuple<string, List<Pupil>>> results
创建一个新列表,其中所有学生的成绩均为10。
最终结果应该是这样的:
results[0]:
SchoolAdress1
Surname1;10
results[1]:
SchoolAdress3
Surname5;10
我的问题是我必须创建一个新的元组Tuple<string, List<Pupil>>
。我尝试过:var results = data.Select(list => list.Item2.Where(pupil => pupil.Grade == 10).ToList()).ToList();
答案 0 :(得分:0)
如果您想坚持使用Tuple
的方法,可以进行以下操作:
var filteredData = data.Select(x => new Tuple<string, List<Pupil>>(x.Item1, x.Item2.Where(y => y.Grade == 10).ToList())).ToList();
filteredData
现在是一个List<Tuple<string, List<Pupil>>
,其中Item2
的{{1}}部分被Tuple
过滤。
如果您要删除Grade == 10
的{{1}}中0
个条目中的所有条目,则可以这样称呼:
List<Pupil>
或者在第一行包含一个Tuple
子句,并将其更改为:
filteredData.RemoveAll(x => !x.Item2.Any());
在这里您可以看到它的运行情况: