由于LINQ查询返回的集合中匿名类型的属性都是只读的,如果需要为匿名属性赋值,只能通过初始化设定项来进行。初始化设定项还能为属性使用表达式。
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 List<Person> personList = new List<Person>() 6 { 7 new Person(){Name="Rose",Age=18}, 8 new Person(){Name="Mike",Age=25}, 9 new Person(){Name="john",Age=18} 10 }; 11 var items = from p in personList 12 select new { p.Name, AgeScope = p.Age > 20 ? "Old" : "Young" }; 13 foreach (var item in items) 14 { 15 Console.WriteLine(string.Format("{0}:{1}", item.Name, item.AgeScope)); 16 } 17 Console.Read(); 18 } 19 } 20 class Person 21 { 22 public string Name { get; set; } 23 public int Age { get; set; } 24 }
这段代码在LINQ查询中创建了一个匿名类型,该类型含有属性Name和AgeScope。
参考:《编写高质量代码改善C#程序的157个建议》陆敏技