c# - linq - 从选择

标签 c# linq

我正在做一个小例子来了解 from in select .

我的例子:

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

    public Person(string name, int age)
    {
        this.Name = name;
        this.Age = age;
    }
}
class Program
{
    static void Main()
    {
        var list = new List<Person>();
        list.Add(new Person(name: "Hermione", age: 20));

        var persons = from p in list select new { p.Age, p.Name };            
        foreach (var person in persons)
        {
            Console.WriteLine($"Name: {person.Name}. Age: {person.Age}");
        }

        var _persons = from p in list select new Person(p.Name, p.Age);
        foreach (var person in _persons)
        {
            Console.WriteLine($"Name: {person.Name}. Age: {person.Age}");
        }
    }
}

他们两个都有相同的结果:

Name: Hermione. Age: 20



我的问题:第一个和第二个之间有什么区别?什么时候使用第一个/第二个?

最佳答案

首先这里是匿名类型var persons = from p in list select new { p.Age, p.Name };因此,您可以创建随机的属性名称,例如

 var persons = from p in list select new { AgesSomeWithDay = p.Age , FullName = p.Name + p.Name };  

但是 var _persons = from p in list select new Person( p.Name, p.Age);是强类型的,你不能随机命名属性,因为这里是 new PersonPerson类包含两个您只能分配给 _persons 的属性

关于c# - linq - 从选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36477898/

相关文章:

c# - Expression.DebugInfo 如何标记表达式?

c# - Linq 查询 - 创建通用子集

c# - 如何在 NHibernate 中自动生成 ID

c# - LINQ/Projection - 包含用于过滤的所有通配符

C# 搜索特定文件夹以外的文件和文件夹

c# - 如何在 LINQ 中组合对象属性中的列表?

mysql - 数据读取器有多个字段。多个字段对 EDM 基元类型无效

c# - 当前安装不支持该项目类型

c# - 混合构造函数集字段和字段初始化器

c# - 如何查询 Azure CosmosDB/DocumentDB 中的字典内容?