Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选择新的关键字组合_C#_Linq - Fatal编程技术网

C# 选择新的关键字组合

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

在LINQ中,
选择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 } ;