Seçilmiş veri kaynağımdan başarılı bir şekilde veri alıp veri alan bir Linq sağlayıcım var, ancak filtrelenmiş sonuç kümemde sahip olduğum şeyi şimdi yapmak istiyorum. Ekspresyon ağacının geri kalanını işlemek için Nesneler (Katmanlar, yansıtma vb. Gibi şeyler için)IQueryable sorgusunun bir parçasını gerçekleştirme ve geri kalanını Nesneler için Linq'e erteleme
Benim düşüncem, IQueryProvider'ım içeren bir ifade sabitini, bir ExpressionVisitor ile IEnumerable sonuç kümeleriyle değiştirebiliyordum ve yeni ifadeyi döndür. Ayrıca benim IQueryable gelen IEnumerable en sağlayıcı dönmek ... ama bu
Herhangi fikrin
Düzenleme :-(çalışmak görünmüyor:? ... formu verilmiş burada Bazı iyi cevaplar, ama
var qry = from c in MyProv.Table<Customer>()
Join o in MyProv.Table<Order>() on c.OrderID equals o.ID
select new
{
CustID = c.ID,
OrderID = o.ID
}
Sağlayıcımda, Müşteriler ve Siparişler'deki 2 sonuç kümesini kolayca geri alabilirim, eğer veri bir SQL kaynağından geldiyse, sadece SQL Join sözdizimini yapılandırabilir ve geçirebilirdim, ancak bu durum verilerden değil. SQL kaynağı bu yüzden kodda birleştirme yapmam gerekiyor ... ama 2 sonuç kümesine sahip olduğumu söylediğim gibi, ve Linq to Objects birleştirme yapabilir ... (ve sonrasında izdüşüm) MyProv.Table<Customer>
ve MyProv.Table<Order>
ve ile MyProv.Table<Order>
ve List<Order>
yerine İfade sabitlerini ve List<>
sağlayıcının ifade işlemine izin vermesi çok güzel olurdu ... bu mümkün mü? Nasıl?
dizlerimin teşekkür ederim - Derin ifade ağacı ziyaretçilerin. :) Bu tam olarak ihtiyacım olan şey – Rik