问题标签 [anonymous-types]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 将匿名类型转换为类
我在 List anBook 中有一个匿名类型:
是否可以将其转换为具有以下 clearBook 定义的列表:
通过使用直接转换,即不循环通过 anBook?
c# - 如何创建和访问在 C# 中作为参数传递的匿名类的新实例?
我创建了一个函数,它接受一个 SQL 命令并生成输出,然后可以使用该输出来填充类实例列表。代码效果很好。我在这里包含了一个稍微简化的版本,没有异常处理,仅供参考 - 如果您想直接解决问题,请跳过此代码。但是,如果您在这里有建议,我会全力以赴。
正如我所说,这很好用。但是,出于显而易见的原因,我希望能够使用匿名类调用类似的函数。
问题 #1:看来我必须在调用此函数的匿名版本时构造一个匿名类实例- 对吗?一个示例调用是:
问题 #2:我的 ReturnList 函数的匿名版本如下。谁能告诉我为什么对 info.SetValue 的调用什么都不做?它不会返回错误或任何内容,但也不会更改目标字段的值。
有任何想法吗?
注意:当我尝试像在上面的函数中那样使用 FieldInfo 数组时,typeFields 数组的元素为零(即使 objectType 显示了字段名称 - 很奇怪)。因此,我改用 TypeDescriptor.GetProperties。
此处适用于使用反射或匿名类的任何其他提示和指导 - 我对 C# 语言的这个特定角落相对较新。
更新:我必须感谢杰森解决这个问题的关键。下面是修改后的代码,它将创建一个匿名类实例列表,从查询中填充每个实例的字段。
请注意,查询已经构建,并且在之前调用此对象的方法时已初始化参数。原始代码具有内部/外部循环组合,因此用户可以在其匿名类中拥有与字段不匹配的字段。但是,为了简化设计,我决定不允许这样做,而是采用了 Jason 推荐的 db 字段访问。此外,还要感谢 Dave Markle 帮助我更多地了解使用 Activator.CreateObject() 与 GenUninitializedObject 的权衡。
vb.net - 将现有类型转换为匿名类型并添加新属性
是否可以采用现有类型并从中创建具有附加属性的匿名类型?例如(在 VB 中)
我想要的是第二个对象(n)来克隆 p 的所有属性,然后添加一个新属性(ShoeSize)。
这可能吗?
非常感谢
詹姆士
c# - C# 功能请求:在匿名类型上实现接口
我想知道做这样的事情需要什么:
创建的匿名类型如下所示:
编译器有什么理由不能做这样的事情吗?即使对于非 void 方法或带参数的方法,编译器也应该能够从接口声明中推断出类型。
免责声明:虽然我确实意识到这目前是不可能的,并且在这种情况下简单地创建一个具体的类会更有意义,但我对此的理论方面更感兴趣。
c# - 使用具有 Linq 匿名类型的 ComboBox 的 SelectedItem 属性
在 C# 3.5 中使用 ComboBox 来显示 LinQ 查询的结果。当 LinQ 查询返回匿名类型时,如何设置 ComboBox 的 SelectedItem 属性?
我按照以下几行设置 ComboBox 的 DataSource:
如果我这样做,我可以通过执行以下操作来选择所选项目:
问题是我想用匿名类型结果填充 ComboBox,例如:
我实际使用的匿名类型比那更复杂,但足以解释。
c# - LINQ Select Distinct with Anonymous Types
所以我有一个对象集合。确切的类型并不重要。从中我想提取一对特定属性的所有唯一对,因此:
所以我的问题是:在这种情况下 Distinct 会使用默认对象 equals (这对我来说没用,因为每个对象都是新的)还是可以告诉它做不同的 equals (在这种情况下,Alpha 和 Bravo 的值相等=> 相等的实例)?如果不这样做,有什么方法可以达到这个结果?
c# - C#:匿名类型和属性名称
这之间有什么区别吗:
还有这个:
?
c# - 如何使用 Func 在 Linq 中指定 .NET 匿名对象返回类型?
如何为匿名对象指定Func签名?
我在 Func 声明中指定为IEnumerable<>的返回类型有问题
我从表达式中得到的错误是
无法将表达式类型“System.Collections.Generic.IEnumerable<{ParentNodeId:int}>”转换为返回类型“System.Collections.Generic.IEnumerable”
如何在 func 中指定IEnumerable<{ParentNodeId:int}> ?
顺便说一句,我可以使用注释代码“查询”并完成它。但是想要更有表现力并在查看这个答案后尝试一些新的东西 为什么 C# 没有词法嵌套函数?
编辑:最终结果
c# - .net 数据绑定 - 引用匿名类型属性
我已将 ASP.net GridView 绑定到一组匿名类型。
如何在 RowDataBound 事件处理程序中引用匿名类型的属性之一?
我已经知道像这样强制转换匿名类型的方法:
我想大多数人会说这很混乱,即使它确实有效。在我的真实代码中,我有超过 3 个属性,每当我添加或重新排序匿名类型的属性时,我都必须在两个地方更新代码。
有没有更好的方法来告诉 e.Row.DataItem 它具有特定类型的特定属性并强制对象给我该值(除了创建一个类)?
c# - 匿名类的通用列表
在 C# 3.0 中,您可以使用以下语法创建匿名类
有没有办法将这些匿名类添加到通用列表中?
例子:
另一个例子: