由于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 personList12 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 Person21 {22 public string Name { get; set; }23 public int Age { get; set; }24 }
这段代码在LINQ查询中创建了一个匿名类型,该类型含有属性Name和AgeScope。
参考:《编写高质量代码改善C#程序的157个建议》陆敏技