11
A
回答
22
使用select new
,您可以使用一组您所使用的数据或对象来创建新的对象,无论是打字anonymously或正常。
1.使用select new
返回新匿名类型的对象:
var records = from person in people
select new { person.name, person.id };
它使用new
关键字来创建一组匿名类型对象的。一个新的对象类型是由编译器创建的,它有两个属性。如果您在调试器中查看对象类型,您会发现它有一个看起来很疯狂的自动生成类型名称。但你也可以使用关键字new
就像你已经习惯了LINQ外:
2.使用select new
建设“定期”类型的对象:
var records = from person in people
select new CreditRecord(person.creditLimit, person.name);
本例使用new
关键字就像你习惯的那样 - 通过它的一个构造函数构造一些已知类型的对象。
Select被称为转换(或投影)运算符。它允许您通过转换函数将数据放入您正在使用的集合中,以在另一侧为您提供新对象。在上面的例子中,我们只是通过仅选择人物对象的特定属性并将它们转化为其他类型,从而将人物对象“转化”为其他类型。因此,select new ...
的组合实际上只是将new
操作指定为select
语句的转换函数。这可能使用一个反例更有意义,上述两个:
3.使用select
没有new
,没有改造
当然你不需要使用select
和new
在一起。就拿这个例子:
var someJohns = from person in people
where person.name == "John"
select person;
这让你回到那是在你一起工作的一整套原始对象类型 - 不转型,并没有创建新对象。
4。使用select
没有new
,具有改造
最后,没有new
关键字的转换:
var personFoods = from person in people
select person.GetFavoriteFoods();
,让你回来了一些新类型的对象,从变换函数生成的,而不是通过直接使用new
关键字来构造它。
1
这是select
关键字后跟new
表达式,可能会创建一个anonymous type。
换句话说,它是以下两个不相关的表达式的组合:
select
from a in whatever select 2
Anonymous types
new { Prop1 = 3, Prop2 = DateTime.Now }
1
它不是一个真正的组合,new
只是创建一个匿名类型返回值。否则,你将不得不使用字典/数组等(如在PHP中),这总是丑陋的。
var q =
from staff in theWhiteHouseStaff
select new { Name = staff.Name } ;
相关问题
- 1. Missing选择关键字
- 2. 关键字选择背景?
- 3. 选择器关键字
- 4. 了解新的关键字关联jquery选择器
- 5. Bot选择了DM选择的关键字来选择用户
- 6. c#字典从关键字选择值
- 7. SQL选择字符串与关键字
- 8. async关键字和TaskScheduler的选择
- 9. 在cassandra中选择组合类型键
- 10. 引导组合框,选择键入值
- 11. 部分刷新组合框的选择
- 12. 只选择元组的字典键?
- 13. 使新的关键字可选
- 14. 多个关键字在选择喜欢
- 15. 如何使用选择关键字
- 16. 从表phpmyadmin中选择(关键字)
- 17. 如何正确选择关键字
- 18. SQL关键字JOIN - 多重选择
- 19. 缺少关键字选择查询
- 20. 为搜索引擎选择关键字
- 21. 选择关键字require>而不是=
- 22. 围绕关键字选择句子
- 23. 新的关键字
- 24. 组合中选择的文字大小
- 25. 关于“新”的关键字
- 26. WPF组合框 - 在绑定字段的setter改变选择 - 组合框选择不更新
- 27. SQL重新组合只选择记录
- 28. 组合选择和更新语句
- 29. 如何重新组合嵌套选择?
- 30. 组合框选择后刷新计算?