[英]C# sort rows of dataTable using interface
這是我如何從數據庫獲取數據並將其添加到DataTable命名數據的代碼,我必須使用接口(越來越多)按行“Spelionu skaicius”的數據對所有表進行排序,但我不知道如何實現有人可以幫忙嗎? 我知道有很多方法可以對此進行排序,但我必須使用界面進行排序。
using (FbConnection fbBD = new FbConnection(csb.ToString()))
{
fbBD.Open();
FbTransaction transact = fbBD.BeginTransaction();
FbCommand sqlReq =
new FbCommand("SELECT vardas,pavarde,sp_skaicius,spelioniu_sk FROM zaidejai WHERE atspetas='Taip'", fbBD, transact);
using (FbDataReader r = sqlReq.ExecuteReader())
{
while (r.Read())
{
DataRow rw = dt.NewRow();
rw["Vardas"] = r.GetString(0);
rw["Pavarde"] = r.GetString(1);
rw["Skaicius"] = r.GetValue(2);
rw["Spelionu skaicius"] = r.GetValue(3);
data.Rows.Add(rw);
}
}
transact.Commit();
fbBD.Close();
}
對不起我的英語
使用數據表DefaultView屬性:
data.DefaultView.Sort = "Spelionu skaicius";
然后,您可以使用data.DefaultView(數據視圖)或者如果需要數據表,可以執行以下操作:
data = data.DefaultView.ToTable();
< - 編輯 - >
以上是定期排序。 如果要使用IComparable,則必須使用自定義clases而不是DataTable。 以下是對如何解釋的解釋。
最好是讓數據庫對數據進行排序,相反,我會將你的選擇更改為:
SELECT vardas,pavarde,sp_skaicius,spelioniu_sk
FROM zaidejai
WHERE atspetas='Taip'
ORDER BY spelioniu_sk
請注意,我使用了spelioniu_sk,因為這是select中列出的第4列,然后在您的數據表定義中映射到Spelionu skaicius
如果在從數據庫獲取數據后仍然必須對數據表進行排序(可能是以不同的順序),則可以使用DataTable的DataView原理:
data= data.DefaultView.Sort = "`Spelionu skaicius` ASC";
要么
data = data.DefaultView.Sort = "`Spelionu skaicius` DESC";
取決於您需要排序的順序。
注意:我不確定上面的Sort Expression是否可以正常工作。 既然您決定在中間用空格命名您的列,您可能需要將兩個單詞括在反引號中(如上所述)或方括號(例如[Spelionu skaicius] ASC
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.