LINQ ищет список, который содержит класс с объектами - PullRequest
1 голос
/ 07 июня 2019

Я новичок в 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 и сопоставить ID и Name пользователя, который зашел на сайт. Если эти два поля совпадают, я хочу взять из списка пользователей Course и Grade.

Есть предложения, как это сделать?

Ответы [ 3 ]

2 голосов
/ 07 июня 2019

Простое 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 голос
/ 07 июня 2019

Во-первых, давайте предположим, что у вас есть две переменные, которые содержат значения, введенные пользователем.Этими переменными являются userName типа string и id типа integer.Если вам нужна переменная, которая содержит курс и оценку, вы можете выбрать новый анонимный тип и выполнить запрос следующим образом:


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

, тогда вы можете использовать такие значения, как:

values.Grades

values.Course
0 голосов
/ 07 июня 2019
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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...