C# C使用接口对数据表的行进行排序
这是我如何从数据库中获取数据并将其添加到名为data的DataTable中的代码, 我必须越来越多地使用接口按Spelionu skaicius行的数据对这个表进行排序,但我不知道如何实现这一点,有人能帮我吗? 我知道有很多方法可以对其进行排序,但我必须使用接口进行排序C# C使用接口对数据表的行进行排序,c#,sorting,interface,datatable,C#,Sorting,Interface,Datatable,这是我如何从数据库中获取数据并将其添加到名为data的DataTable中的代码, 我必须越来越多地使用接口按Spelionu skaicius行的数据对这个表进行排序,但我不知道如何实现这一点,有人能帮我吗? 我知道有很多方法可以对其进行排序,但我必须使用接口进行排序 using (FbConnection fbBD = new FbConnection(csb.ToString())) { fbBD.Open(); FbTransaction transact = fbBD.
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();
}
请注意,我的英语很抱歉请使用datatable DefaultView属性:
data.DefaultView.Sort = "Spelionu skaicius";
然后,您可以使用data.DefaultView查看dataview,或者如果需要datatable,可以执行以下操作:
data = data.DefaultView.ToTable();
以上内容用于常规排序。如果要使用IComparable,则必须使用自定义类别而不是DataTable。”这是一种解释。最好让数据库对数据进行排序,因此,我会将您的选择更改为:
SELECT vardas,pavarde,sp_skaicius,spelioniu_sk
FROM zaidejai
WHERE atspetas='Taip'
ORDER BY spelioniu_sk
请注意,我使用了spelioniu_sk,因为它是select上列出的第4列,然后在datatable定义中映射到Spelionu skaicius
如果在从数据库中获取数据后仍必须对数据表进行排序,可能顺序不同,则可以使用数据表的DataView属性,如下所示:
data= data.DefaultView.Sort = "`Spelionu skaicius` ASC";
或
取决于您需要排序的顺序
注意:我不确定上面的排序表达式是否可以正常工作。既然你决定用中间的一个空格命名你的列,你可能需要像上面那样把后缀引文中的2个字括起来,或者也许是方括号[Speliu SkaSiuS] ASC < /P>不能在SQL查询中用SPELIIIUUSK ASC添加顺序吗?看起来你只是得到了这个字段的值,为什么不让查询来帮你呢?你所说的接口是什么意思?使用接口,例如IComperableFirst,我使用data.DefaultView.Sort=Spelionu skaicius;它从我需要的最大到最小排序。此外,我被要求使用Interface对其进行排序。要颠倒顺序,请使用[Spelion uskaicius]DESC。现在,关于IComparable,为什么需要这个?你真的有特殊的分类规则吗?
data = data.DefaultView.Sort = "`Spelionu skaicius` DESC";