檢查Linq IQueryable是否已應用訂單

c# expression-trees linq

有沒有辦法找出IQueryable對像是否在其表達式樹中應用了OrderBy?

我的方案是網格控件啟用了分頁,並按列進行排序。但是默認情況下沒有應用排序,所以在這種情況下,Linq to SQL對行數進行了非常大的選擇,所以在所有場景中我都需要提供一個order by,但是我只應該通過主鍵應用默認順序如果沒有指定其他訂單。

這可能嗎?

一般承認的答案

您可以通過使用自定義ExpressionVisitor或您選擇的任何遞歸遍歷機制檢查查詢的表達式樹來查找。

我覺得你的代碼設計得不好。你可能應該存儲這樣一個事實,即訂購已作為一個bool應用於某處。也許您的應用程序的信息流需要重新架構。

通過這種檢查方法,您將以一種hackish方式恢復此信息。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow