c# Преобразовывают результат var LINQ в фактический тип

В c#, Учитывая следующий код:

public class Person
{
    public int PersonID { get; set; }
    public int Age { get; set; }
    public string Name { get; set; }
}

и

    List<Person> people = new List<Person>();

    for (int i = 0; i != 15; i++)
    {
        Person p = new Person();
        p.PersonID = i;
        p.Age = i * 12;
        p.Name = "Name " + i;
        people.Add(p);
    }


    var sortedPeople = from qPeople in people
                       where qPeople.Age > 0 && qPeople.Age < 25 || qPeople.Age > 100
                       orderby qPeople.Age descending
                       select qPeople;

Я могу загрузить результаты sortedPeople назад в Список <Человек> без цикла?

Спасибо.

5
задан DrBob 14 April 2010 в 03:27
поделиться

4 ответа

Да. Доступен метод расширения .ToList (), поэтому все, что вам нужно сделать, это вызвать его следующим образом.

var sortedPeople = (from qPeople in people 
                       where qPeople.Age > 0 && qPeople.Age < 25 || qPeople.Age > 100 
                       orderby qPeople.Age descending 
                       select qPeople).ToList(); 

Теперь sortedPeople будет иметь вид List вместо IOrderedEnumerable

10
ответ дан 18 December 2019 в 10:43
поделиться

Вы можете использовать

sortedPeople.ToList()

Enumerable.ToList Method

Создает список из IEnumerable.

4
ответ дан 18 December 2019 в 10:43
поделиться
IEnumerable<Person> sortedPeople = from...

Исправлено!

Также:

List<Person> personList = sortedPeople.ToList();

Обратите внимание, что метод ToList перебирает результаты для создания этого списка.

0
ответ дан 18 December 2019 в 10:43
поделиться
 var sortedPeople = (from qPeople in people
                       where qPeople.Age > 0 && qPeople.Age < 25 || qPeople.Age > 100
                       orderby qPeople.Age descending
                       select qPeople).ToList();
2
ответ дан 18 December 2019 в 10:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: