最简单的方法,从泛型列表在C#中使用LINQ筛选值 [英] Simplest way to filter value from generic List in C# using LINQ

查看:1310
本文介绍了最简单的方法,从泛型列表在C#中使用LINQ筛选值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个班。第一个是的,而第二个是的学生的(它继承Person)。我想过滤的通用列表的并且要找出哪个等级的超过700 高所有的学生。我想出了以下解决方案:



<预类=郎-CS prettyprint修调> 类Person
{
公共字符串名称{;设置;}
}

类学生:人
{
公共小数级{搞定;设置;}
}

类节目
{
静态无效的主要(字串[] args)
{
名单<人>人=新的List<&人GT;();
people.Add(新的Person(){名称=约翰});
people.Add(新学生(){名称=乔,等级= 6});
people.Add(新学生(){名称=简,等级= 8});

people.Where(委托(人人){
VAR学生=人为学生;
返回学生= NULL&放大器;!&安培; student.Grade大于7;
});
}
}

有一个简单的过滤此列表的方式?


解决方案

我看到的是使用的唯一改善<为code> OfType ,这样

  VAR的结果= people.OfType<学生>()式(S => s.Grade大于7); 



...我的语法是比较简单...但是,这是在旁观者的眼睛。


I have two classes. The first one is Person, and the second one is Student (which inherits from Person). I want to filter a generic List and find all Students which grades are higher than 7. I came up with the following solution:

class Person
{
    public string Name {get; set;}
}

class Student : Person
{
    public decimal Grade {get; set;}
}

class Program
{
    static void Main(string[] args)
    {
        List<Person> people = new List<Person>();
        people.Add(new Person() {Name="John"});
        people.Add(new Student() {Name="Joe", Grade=6});
        people.Add(new Student() {Name="Jane", Grade=8});

        people.Where(delegate (Person person) {
            var student = person as Student;
            return student != null && student.Grade > 7;
        });
    }
}

Is there a simpler way to filter this list?

解决方案

The only improvement I see is using OfType, like this

var result = people.OfType<Student>().Where(s => s.Grade > 7);

...and my syntax is simpler... but that is in the eye of the beholder.

这篇关于最简单的方法,从泛型列表在C#中使用LINQ筛选值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆