LINQ搜索包含带有对象的类的列表

时间:2019-06-07 10:50:51

标签: c# list linq class search

我是C#的新手,我知道如何对具有一个字段/类型的列表进行LINQ搜索,但是对于对象的许多类型却不行。我创建了一个列表

List<Reader> results = new List<Reader>();

包含此类:

public class Reader
{

    public int ID { get; set; }
    public string Name { get; set; }
    public string Course { get; set; }
    public int Grade { get; set; }

    public Reader(int id, string name, string course, int grade)
    {
        ID = id;
        Name = name;
        Course = course;
        Grade = grade;
    }
}

我想用LINQ搜索它,并匹配进入该站点的用户的IDName。 如果这两个字段相同,我想从列表中获取用户CourseGrade

任何建议怎么做?

3 个答案:

答案 0 :(得分:2)

用于条件的简单Where和用于表示Select应该做:

 List<Reader> results = ...

 var data = results
   .Where(item => item.ID == userID && item.Name == userName)
// .OrderBy(item => item.Course) // uncomment if you want to order by course
   .Select(item => $"Course: {item.Course} Grade: {item.Grade}");

 foreach (var record in data)
   Console.WriteLine(record);

答案 1 :(得分:1)

首先,我们假设您有两个变量来保存用户引入的值。这些变量是字符串类型的userName和整数类型的id。如果您只想要一个包含课程和成绩的变量,则可以选择一个新的匿名类型并执行以下查询:


var values= results
   .Where(item => item.ID == userID && item.Name == userName)
   .Select(item => new { Course = item.Course, Grade = item.Grade });

然后您可以使用以下值:

values.Grades

values.Course

答案 2 :(得分:0)

var Selecteduser = results.Where(x => x.Name == selectedname && x.ID == ID).ToList();
if (Selecteduser.Count != 0)
{
    //found match ..(Selecteduser[0])
    string selectedcourse = Selecteduser[0].Course;
    int selectedgrade = Selecteduser[0].Grade;
}
else
{
   //coudlnt find match
}