2009-03-03 28 views
2

'a bağlanırken 'Veri kaynağı geçersiz bir tür' oluyor Depolanmış bir yordam kullanılan bir linq - sql sorgusuna gridview bağlamaya çalışıyorum. Sayfayı çalıştırdığımda, aşağıdaki hatayı alıyorum:Linq sorgusu Gridview

Veri kaynağı geçersiz bir türdür. Bir IListSource, IEnumerable veya IDataSource olmalıdır.

var db = new TableItemDataContext(); 
var q = db.sp_SearchForItems("1","2","3","4"); 
GridView1.DataSource = q; 
GridView1.DataBind(); 

Herhangi bir Fikir?

cevap

3

Sorguyu bir öğe listesine dönüştürmek için ToList() uzantı yöntemini kullanın.

GridView1.DataSource = q.ToList(); 

Bu aynı zamanda dönüşüm sırasında Sorgu çalıştırmanın bir etki yaratacaktır, bu yüzden sadece IEnumerable döküm işe yarayıp yaramayacağını görmek isteyebilir.

Düzenle: açıklama yoluna göre netleştirmek için. Sorun SPROC'un yapımı ve LINQ'ın dönüş değerini tespit etmemesi ile ortaya çıkıyor. SPROC'nin Stored Procedure & LINQ, Dmbl File unable to interpret the result set uyarınca değiştirilmesi, LINQ'un SPROC'nin geri alınabileceği şemayı algılamasına izin verdi.

+0

Hızlı cevap için teşekkürler! ToList() 'i kullandım ve intellisense (ama System.Linq kullanıyordum) almadım ve derlendiğinde, "int",' ToList 'için bir tanım içermiyor ve' Arglist 'bir ilk arg kabul eden bir uzantı yöntemi yok. int türü bulunabilir. " Fikirler? –

+0

Linq, saklı yordamınız tarafından döndürülen tablonun şemasını belirleyememeli ve int döndürdüğünü düşünmelidir. Geçici tablolar içeren saklı yordamlarla ilgili bazı sorunlar olduğunu biliyorum. Bir sonraki yorumda soruya bağlantı ... – tvanfosson

+0

http://stackoverflow.com/questions/521736/stored-procedure-linq-dmbl-file-unable-to-interpret-the-result-set - eğer alabilirsiniz Çalışmak için, sorguyu doğrudan ToList() olmadan alabilir. – tvanfosson