0
我試圖實現IBindingListView,它可以與任何Linq查詢一起作爲數據源,但我堅持實施Find(PropertyDescriptor, Object)方法,該方法應該找到包含一些記錄的位置特定財產的價值。在Linq2Sql或實體框架查詢中查找記錄位置
我不想遍歷內存中的所有記錄。我想要數據庫來做到這一點。
不幸的是,Linq不支持row_number()SQL函數,我無法找到任何其他方式來做它,同時保留排序和過濾。
換句話說:
鑑於
class Entity
{
public string StringProperty {get; set;}
public int IntProperty {get; set;}
public string StringProperty2 {get; set;}
}
|StringProperty | IntProperty | StringProperty2|
|ccc | 102 | value 2 |
|aaa | 100 | value 0 |
|ddd | 103 | value 3 |
|aaa | 101 | value 1 |
與參數查詢
var query = from e in Entities
where e.IntProperty > 100
orderby e.StringProperty
這給了我
|StringProperty | IntProperty | StringProperty2|
|bbb | 101 | value 1 |
|ccc | 102 | value 2 |
|ddd | 103 | value 3 |
查找()StringProperty2 = 'value 2'
應該返回1(0基於指數),但應該使用Linq來找到它它將在數據庫中執行。
如果將執行2或3個查詢,我沒有問題,但請不要假設我知道關於主鍵或特定Linq提供程序的任何信息。我們可以假設,如果Linq to SQL或Entity Framework能夠將某些東西轉換爲SQL,則可以使用它。
如何實現對任何Linq查詢作爲數據源的IBindingListView.Find()方法?
但是,回到數據庫找到您可以輕鬆從本地列表中獲得的信息有點奇怪。 –
@Arnold除非你有百萬條記錄要在網格中顯示,或者你的代碼位於不應該瞭解GUI分頁等內容的圖層中。 – SeeR