如何在运行时设置泛型方法的类型

时间:2014-11-17 16:21:42

标签: c# .net generics datatable

这样的事情是可能的:

int testvar = 0;
var query = PrimaryDataSource.AsEnumerable().Where(r => 
                r.Field<testvar.GetType()>("col") == testvar);

但我不想要这个:

int testvar = 0;
if (testvar is int)
{
    var query = PrimaryDataSource.AsEnumerable().Where(r => 
                    r.Field<int>("col") == testvar);
}

1 个答案:

答案 0 :(得分:3)

不要使用Field来获取价值;把它作为一个对象:

var query = PrimaryDataSource.AsEnumerable().Where(r => 
    object.Equals(r["col"], testvar));

使用泛型的全部意义在于,当您知道静态类型时,使用静态类型。既然你没有,那么使用它没有任何好处。