我找不到将匿名类型作为类型参数传递给泛型类的方法。
//这是我要实例化的类
public class ExtArrayStore<T> : IViewComponent
{
public IQueryable<T> Data { get; set; }
... //创建者类
public static class ArrayStoreGenerator
{
public static ExtArrayStore<T> CreateInstance<T>(IQueryable<T> query)
{
return new ExtArrayStore<T>();
}
}
//尝试使用此
IQueryable usersQuery= ((from k in bo.usersselect new { userid = k.userid, k.username}).AsQueryable());
var x = ArrayStoreGenerator.CreateInstance(usersQuery);
我到了;
无法从用法中推断出方法 ArrayStoreGenerator.CreateInstance(System.Linq.IQueryable)'的类型参数。尝试明确指定类型参数
有没有办法实现这个目标? (我正在考虑接口并返回一个接口,但不确定它是否可行)可以帮助将anon类型传递给泛型。
答案 0 :(得分:6)
usersQuery
被输入为非泛型IQueryable
,因为您在变量的声明中明确指定了它。
相反,请var usersQuery = ...
。这会将变量键入IQueryable<TAnon>
,然后匹配ArrayStoreGenerator.CreateInstance
的签名。
答案 1 :(得分:3)
您应该将usersQuery定义为var。
答案 2 :(得分:2)
如果您尝试使用var usersQuery
局部变量而不是明确指定其类型,该怎么办?
答案 3 :(得分:0)
尝试ToArray
:
var x = ArrayStoreGenerator.CreateInstance(usersQuery.ToArray());