我正在使用Predicate Builder的Linq to Sql,並試圖優化從數據庫中檢索多少信息。我想只選擇某些字段在gridview中顯示它們。當我僅選擇我想要的內容時,我添加的搜索參數(請參見下文)不起作用,PredicateBuilder也不起作用。下面是目前我在做什麼(這樣的作品,但得到的一切是太多的信息),如果我改變,只選擇我需要什麼,這樣Linq to Sql - 僅選擇某些信息(帶謂詞生成器)
' Initial Setup '
Dim db As New MyDataContext()
Dim results = From p In db.Products _
Select p
' Search '
If (testCase) Then
results = results.Where(Function(p) p.SomeAttribute = 123)
End If
:
Dim results = From p In db.Products _
Select p.Name, p.SomethingElse
然後我注意到,如果信息被選中(即我選擇p.SomeAttribute),那麼我可以搜索(添加where子句)該屬性,但如果沒有,我不能。如果我選擇整個項目(即選擇p),則只有謂詞構建器纔有效。所有這些應該做的就是創建SQL語句,而不必選擇要由其進行搜索的屬性。我怎樣才能使這個工作,只選擇我需要的東西,但搜索任何東西,並保持prediate生成器工作?任何幫助很高興!謝謝
嗨,我實際上已經試過了,它給出了這個錯誤: 無法投射'System.Data.Linq.DataQuery`1類型的對象[VB $ AnonymousType_0`3 [System.Int32,System.Int32,System .String]]'鍵入'System.Linq.IQueryable`1 [MyNamespace.Product]'。 圍繞那一個的任何想法? – Ryan 2009-08-03 17:13:25
我的例子中有一個錯誤會導致錯誤 - 我已經更新了示例來修復它。 – 2009-08-03 18:26:03