当前位置: 首页 > 编程语言 > C#

SelectNewKeywordCombination分享

时间:2023-04-10 20:07:31 C#

SelectNewKeywordCombinationLINQ中selectnewkeywordcombination的作用是什么?我没有找到太多关于此的文档。谢谢通过使用selectnew,您可以使用您正在使用的集合中的数据或对象来创建新对象,无论是匿名的还是正常键入的。1、使用selectnew返回新的匿名类型对象:varrecords=frompersoninpeopleselectnew{person.name,person.id};这使用new关键字创建一组匿名类型对象。编译器只是创建一个具有两个属性的新对象类型。如果您查看调试器中的对象类型,您会发现它有一个看起来很疯狂的自动生成的类型名称。但是您也可以像在linq之外习惯使用new关键字:2.使用selectnew构造“常规”类型的对象:varrecords=frompersoninpeopleselectnewCreditRecord(person.creditLimit,person.name);这个例子像你习惯的那样使用new关键字——通过它的构造函数之一构造一个已知类型的对象。Select称为变换(或投影)运算符。它允许您通过转换函数将数据放入您正在使用的集合中,从而在另一端为您提供新对象。在上面的示例中,我们通过选择人员对象的特定属性并对其进行操作,简单地将人员对象“转换”为另一种类型。所以组合selectnew...实际上只是将new操作指定为select语句的转换函数。对于上面的两个反例,这样说可能更有意义:3.使用selectwithoutnew,不转换当然,你不需要select和new一起使用。例如:varsomeJohns=frompersoninpeoplewhereperson.name=="John"selectperson;这将返回您正在使用的集合中的原始对象类型——没有转换,也没有新对象创建。4.使用不带new的select进行转换最后是不带new关键字的转换:varpersonFoods=frompersoninpeopleselectperson.GetFavoriteFoods();它会返回一些新类型的对象,这些对象是由转换函数生成的,而不是直接使用new关键字来构造它。它是select关键字后跟一个新表达式,可能会创建一个匿名类型。换句话说,它是以下两个不相关表达式的组合:selectfromainwhateverselect2anonymoustypenew{Prop1=3,Prop2=DateTime.Now}这不是真正的组合,new只是创建一个匿名类型来返回值.否则你将不得不使用字典/数组等(就像在PHP中一样),这总是很丑陋。以上就是《C#学习教程:选择新的关键词组合》的全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望你多多关注——varq=fromstaffintheWhiteHouseStaffselectnew{Name=staff.Name};本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: