LINQ查询涉及泛型不起作用

时间:2011-10-15 01:08:37

标签: linq

我没看到下面的LINQ查询我做错了什么。

我正在构建一个通用类型:

public class MyClass<TKey, TValue> : IList<TValue> { ... }

在这个类中,我声明了一个嵌套的私有类型:

private class Pair {
    public TKey Key { get; set; }
    public TValue Value { get; set; }

    public Pair() {
        Key = default( TKey );
        Value = default( TValue );
    }
}

到目前为止一切顺利。现在,在MyClass我有一个方法,它有一个TKey个对象的数组。我想使用LINQ来提取TKey个对象的页面,并创建一个较小的Pair个对象数组。这是我建立的查询:

TKey[] Keys = ...;
IQueryable<Pair> query = from key in Keys
                         select new Pair { Key = key, Value = default( TValue ) };

当我编译程序时,我在选择其中的行中出现以下错误:

Cannot implicitly convert type 
    'System.Collections.Generic.IEnumerable<MyNameSpace.MyClass<TKey,TValue>.Pair>'
to  'System.Linq.IQueryable<VirtualLoadApp.MyClass<TKey,TValue>.Pair>'. 
An explicit conversion exists (are you missing a cast?)

我做错了什么?

1 个答案:

答案 0 :(得分:1)

试试这个:

            var q = from key in Keys
                    select (new Pair { Key = key, Value = default(TValue) });
            IQueryable<Pair> query = q.AsQueryable<Pair>();