c#将LINQ var结果转换为实际类型

时间:2010-04-14 03:27:50

标签: c# .net 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的结果加载回List&lt; Person&gt;没有循环?

感谢。

4 个答案:

答案 0 :(得分:10)

是。有一个.ToList()扩展方法可用,所以你需要做的就是像这样调用它。

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

现在已排序的人将是List<Person>而不是IOrderedEnumerable<Person>

答案 1 :(得分:4)

您可以使用

sortedPeople.ToList()

Enumerable.ToList Method

  

从中创建一个列表   IEnumerable的。

答案 2 :(得分:2)

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

答案 3 :(得分:0)

IEnumerable<Person> sortedPeople = from...

固定!

此外:

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

注意,ToList方法循环结果以生成此列表。