Note that _src inherit IQueryable<U>and V inherit new();
I wrote the following statement, there is no syntax error.
IQueryable<V> a = from s in _src where (s.Right - 1 == s.Left) select new V();
But if I RE-wrote it as follows, the Visual Studio editor complains about the error in the "Select"
IQueryable<V> d = _src.Where(s => s.Right - 1 == s.Left).Select(s=> new V());
Error:
The type arguments cannot be inferred from the usage. Try specifying the type arguments explicitly.
Candidates are:
System.Collections.Generic.IEnumerable<V> Select<U,V>(this System.Collections.Generic.IEnumerable<U>, System.Func<U,V>) (in class Enumerable)
System.Linq.IQueryable<V> Select<U,V>(this System.Linq.IQueryable<U>, System.Linq.Expressions.Expression<System.Func<U,V>>) (in class Queryable)
Can someone explain this phenomenon and what solution should fix the error?
=== Edit (2010-03-16 17:35) ===
Thanks to Mike Two. I also tried a simple example like you. It works, but this does not happen in mine. I sent the code as follows:
public class NSM<U, V> where U : IQueryable<U> where V : new()
{
private U _src;
public NSM(U source) { _src = source; }
public IQueryable<V> LeafNodes
{
get
{
return from s in _src where (s.Right - 1 == s.Left) select new V();
}
}
}
I want the LeafNodes function to be rewritten in the linq method method method. Any idea?
source
share