_src'nin IQueryable<U>
ve V öğelerini new()
devraldığını unutmayın;C# Linq Yöntemde Sorun Seçin Zincir
Aşağıdaki ifadeyi yazdım, sözdizimi hatası yok.
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)
kimse açıklayabilir misiniz i eğer
IQueryable<V> a = from s in _src where (s.Right - 1 == s.Left) select new V();
Fakat aşağıda açıklandığı gibi, Visual Studio editörü
IQueryable<V> d = _src.Where(s => s.Right - 1 == s.Left).Select(s=> new V());
Hata olduğunu "Seç" bir hata şikayet YENİDEN yazdı Bu fenomen ve hatayı düzeltmek için çözüm nedir?
=== Düzenleme (2010-03-16 05:35)
Teşekkür Mike İki ===. Ben de senin gibi basit bir örneği denedim. İşe yarıyor ama bu benimkilerde yok.
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();
}
}
}
Ben LeafNodes linq yöntemi zincir yöntem haline yeniden yazılması için işlev istiyorum şu şekildedir: Ben kodu yayınlanmıştır. Herhangi bir fikir? derleyici Eğer yürütülecek istediklerini yöntemler seçemezsiniz
Teşekkür IQueryable atanacak. İlkinin eşdeğer ifadesi nedir? – Gnought
Eklediğiniz kod U, Sağ ve Sol özelliği olan bir şey olmadıkça derlenmez. Bu yüzden bir "U: ILeftRight" ya da bir şey olmadığı sürece "IQueryable " olamaz. –
Güncellenmiş örneğiniz sayesinde bunu anladım. Aşağıdaki güncellenmiş cevaba bakınız. Daha fazla bilgi için teşekkürler. –