c# - 如何在使用泛型时指定匿名类型的类型

标签 c# .net linq anonymous-types typeinitializeexception

标题有点乱。我将尝试用一个例子来解释。考虑以下代码:

String[] str={"Apple","Banana","Cherry","Orange"};
var anoCollection=from e in str select new
                                         {
                                          ch=e[0],
                                          length=e.Length
                                         }
dataGridView.DataSource=anoCollection.ToList(); //TypeInitializationException

我觉得我需要为 ToList<T>() 提及上述案例中的类型方法。但是我怎么能在这里提到匿名类型呢?

最佳答案

永远不可能直接提及匿名类型,但您不需要这样做。通用类型推断意味着您不需要指定 <T>.ToList<T>() - 编译器将自动注入(inject)发明的类型。

只有几种方法可以引用匿名类型:

  • 通过someObj.GetType() , 其中someObj是匿名类型的实例
  • 通过泛型,作为 T ,通过泛型类型推断调用泛型方法(如 ToList() )
  • 反射的各种其他用法,拉入 T通过GetGenericTypeParameters()

关于c# - 如何在使用泛型时指定匿名类型的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14139744/

相关文章:

DataReader 循环查询中的 C# MySQL 查询

c# - ADAL token 获取异常

c# - 如何以原子方式释放一个锁并获取另一个锁

VB.NET 和 Linq : Sum datatable column and Group by date in another column

c# - 将 SQL 转换为带计数的 linq 表达式

c# - 无法从 dapr 获取 azure key Vault secret ,因为 daprClient.GetSecretAsync 函数返回错误

c# - 如果 child 不知道,如何将依赖项注入(inject)基类?

c# - 向现有 Web 服务自定义类型添加新字段

c# - (Random.NextDouble() < 1) 的用途是什么

c# - 使用 LINQ 过滤列表