![](/img/trans.png)
[英]where can I find a good example of using linq & lambda expressions to generate dynamic where and orderby sql?
[英]DataTable - Dynamic Linq OrderBy using Lambda expressions
我正在收集數據表中的記錄並將其綁定到網格控件。 在綁定它之前,我將根據幾種條件對數據進行排序。 為簡便起見,我將解釋一個測試方案。
我有兩個字段類別和國家。 我想首先根據類別對記錄進行排序,然后再按國家/地區分類。 但是這里要注意的是,我想將所有空類別值推到最后,然后根據字母順序進行排序。
為此,我正在做-
var rows = dt.AsEnumerable()
.OrderBy(r => string.IsNullOrEmpty(Convert.ToString(r["Category"]))) //push empty values to bottom
.ThenBy(r => Convert.ToString(r["Category"]))
.ThenBy(r => Convert.ToString(r["Country"]))
但是現在,我需要根據其排序的字段是動態的,我在數組中擁有這些字段。
如何使用Lambda表達式基於字段動態排序記錄? (將空值推到最后)
我假設您正在談論的數組是一個字符串數組。
var columns = new string[] { "Category", "Country" };
var rows = dt.AsEnumerable().OrderBy(x => 0);
foreach(var columnName in columns)
{
rows = rows.ThenBy(r => string.IsNullOrEmpty(Convert.ToString(r[category])))
.ThenBy(r => Convert.ToString(r[category]));
}
由於LINQ使用延遲執行,因此只有在您真正需要結果之前,您的查詢才會被評估。 這就是為什么您可以像上面的示例一樣分多個步驟構造它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.