gpt4 book ai didi

c# - 在IQueryProvider的实现中构造Linq.EnumerableQuery时出现编译器错误

转载 作者:行者123 更新时间:2023-12-02 10:45:37 24 4
gpt4 key购买 nike

我有一个IQueryProvider的实现,并具有以下方法:

public override IQueryable<T> CreateQuery<T>(System.Linq.Expressions.Expression expression)
{
return new System.Linq.EnumerableQuery<T>(this.Items);
}

items属性定义为
public IEnumerable<T> Items { get; set; }

我收到EnumerableQuery构造函数的神秘编译器错误:
> Argument 1: cannot convert from
> 'System.Collections.Generic.IEnumerable<T>
> [c:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll]' to
> 'System.Collections.Generic.IEnumerable<T>> [c:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll]'

我究竟做错了什么?我知道它很可能包装在某个泛型中,但是参数对我来说看起来是一样的!

最佳答案

问题是您的方法声明:

public override IQueryable<T> CreateQuery<T>(Expression expression)

您正在使用通用方法声明新的类型参数 T。该类型的type参数与 T不同。将其更改为非泛型方法:
public override IQueryable<T> CreateQuery(Expression expression)

(顺便说一句,如果您使用适当的 using指令来避免在代码中包含如此多的标准类型名称,那么您的代码将更易于使用。)

关于c# - 在IQueryProvider的实现中构造Linq.EnumerableQuery时出现编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13609991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com