s5s*_*s5s 5 c# datatable select sql-order-by
我有一个包含CustomerName和Age列的两列表.我拥有DataTable中的所有数据.我希望通过降序Age来对其进行排序,然后按名称对每个年龄组进行排序.因此,所有30岁的人都将按照所有人的名义进行分类,并列在29岁至31岁等人名单之间.
我有:
string selectStatement = "Age";
string sortStatement = "Age DESC"
var rows = table.Select(selectStatement, sortStatement);
Run Code Online (Sandbox Code Playgroud)
这应该按年龄排序.我还没想出如何按字母顺序对每个年龄组进行排序,但上面引发了异常:
过滤器表达式"Age"不会计算为布尔项.
正如@adrift 所说。您应该发送一个过滤表达式(其计算结果为布尔值)作为第一个参数。尝试在那里发送 null 和一个空字符串,也许 Select 会忽略该参数。或者给它一些简单的表达式,比如 0<1。然后按部分顺序,您可以用逗号分隔几个字段:“年龄描述,姓名”。
但更好的是,您应该使用 DataView 类。像这样:
var dt = new DataTable(); // your data.
var view = new DataView(dt);
view.Sort = "Age desc, Name asc";
Run Code Online (Sandbox Code Playgroud)
然后您可以将此类设置为某些控件等的数据源。它将按正确的顺序返回行。或者您可以简单地使用 foreach 来迭代行。
foreach (DataRowView dr in view)
{
//do what you like
}
Run Code Online (Sandbox Code Playgroud)