簡體   English   中英

C#使用接口對dataTable行進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM