当前位置: 首页 > 编程语言 > C#

使用LINQ在C#中从泛型列表中筛选值的最简单方法分享

时间:2023-04-11 11:43:42 C#

使用LINQ在C#中从泛型列表中筛选值的最简单方法我有两个类。第一个是Person,第二个是Student(从Person继承)。我想过滤一个通用列表以查找所有成绩高于7的学生。我想出了以下解决方案:classPerson{publicstringName{get;设置;}}classStudent:Person{publicdecimalGrade{get;设置;}}classProgram{staticvoidMain(string[]args){Listpeople=newList();people.Add(newPerson(){Name="John"});people.Add(newStudent(){Name="Joe",Grade=6});people.Add(newStudent(){Name="Jane",Grade=8});people.Where(delegate(Personperson){varstudent=personasStudent;returnstudent!=null&&student.Grade>7;});是否有更简单的方法来过滤这个列表?我看到的唯一改进是使用OfType,就像这样varresult=people.OfType().Where(s=>s.Grade>7);...而且我的语法更简单...但这是旁观者的眼睛。这里有一些不同的方法,以及一些相对的性能数字:Initialpeople.Where(delegate(Personperson){varstudent=personasStudent;returnstudent!=null&&student.Grade>7m;});初始修改(与初始速度相同)people.Where(p=>{varstudent=pasStudent;returnstudent!=null&&student.Grade>7m;});OfType(比最初低40-52%)people.OfType().Where(s=>s.Grade>7m)Foreach(比最初快9-16%)varresults=newList();foreach(varpersoninpeople){varstudent=personasStudent;if(student!=null&&student.Grade>7m){results.Add(student);}}for(比初始快12-18%)varresults=newList();对于(varidxPerson=0;idxPerson7m){结果。添加(学生);要得到性能数据,我:当然,这些只是我机器上的性能数据,你必须测试真实世界的数据才能得到实际结果,因为学生与人的分布,学生的平均成绩等原因很多时间变化。以上就是C#学习教程:使用LINQ在C#中从genericsList过滤值最简单的方法。p=>p.Grade本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢