C# 选择新的关键字组合
在LINQ中,C# 选择新的关键字组合,c#,linq,C#,Linq,在LINQ中,选择new关键字组合的作用是什么 我还没有找到很多关于这个的文档 谢谢通过使用选择新建,您可以使用正在使用的数据或对象集中的数据或对象来创建新对象,无论是键入的还是正常的 1。使用选择new返回新的匿名类型对象: var records = from person in people select new { person.name, person.id }; var records = from person in people
选择new
关键字组合的作用是什么
我还没有找到很多关于这个的文档
谢谢通过使用
选择新建
,您可以使用正在使用的数据或对象集中的数据或对象来创建新对象,无论是键入的还是正常的
1。使用
选择new
返回新的匿名类型对象:
var records = from person in people
select new { person.name, person.id };
var records = from person in people
select new CreditRecord(person.creditLimit, person.name);
这将使用new
关键字创建一组匿名类型的对象。编译器只需创建一个新的对象类型,其中包含两个属性。如果您在调试器中查看对象类型,您将看到它有一个外观疯狂、自动生成的类型名。但您也可以使用new
关键字,就像您在linq之外使用的一样:
2。使用
select new
构建“常规”类型的对象:
var records = from person in people
select new { person.name, person.id };
var records = from person in people
select new CreditRecord(person.creditLimit, person.name);
本例使用new
关键字,就像您习惯的那样-通过其构造函数之一构造某种已知类型的对象
选择称为变换(或投影)操作符。它允许您通过转换函数将数据放入正在使用的集合中,以便在另一端为您提供一个新对象。在上面的例子中,我们只是通过只选择person对象的特定属性并对其进行处理,将person对象“转换”为其他类型。因此,selectnew…
的组合实际上只是将new
操作指定为select
语句的转换函数。用一个与上述两个相反的例子可能更有意义:
3。使用
选择
而不使用新建
,不进行转换
当然,您不需要同时使用select
和new
。举个例子:
var someJohns = from person in people
where person.name == "John"
select person;
这将返回您正在使用的集合中的原始对象类型-不进行转换,也不创建新对象
4。使用
选择
而不使用新建
,并进行转换
最后,一个没有new
关键字的转换:
var personFoods = from person in people
select person.GetFavoriteFoods();
它将返回一些新类型的对象,这些对象是从转换函数生成的,而不是直接使用
new
关键字来构造它。它是select
关键字,后跟new
表达式,可能创建了一个新的表达式
换句话说,它是以下两个不相关表达式的组合:
选择
它实际上不是一个组合,
new
只是创建一个匿名类型来返回值。否则,您将不得不使用字典/数组等(如PHP),这总是很难看
var q =
from staff in theWhiteHouseStaff
select new { Name = staff.Name } ;