-1

例如:-

var Rows = (from row in dt1.AsEnumerable()
                            orderby row["Amount"] descending
                            select row);

如果像这样的表

              RegId     Name

              101       jone

              102       Raj

              103       guru

       i want output like this using c# DataTable

              RegId     Name

              103       jone

              102       Raj

              101       guru  

我只想对 regid 列行进行排序

4

3 回答 3

1

因此,您想订购一列,但将列的其余部分保持原来的顺序?奇怪的要求,列之间不相关吗?

但是,以下代码将选择所需的列并按降序排列。然后DataTable将使用此列的新值进行更新:

List<int> amountsOrdered = dt1.AsEnumerable()
    .Select(r => r.Field<int>("Amount"))
    .OrderByDescending(i => i)
    .ToList();
for (int i = 0; i < dt1.Rows.Count; i++)
    dt1.Rows[i].SetField("Amount", amountsOrdered[i]);

请注意,Field扩展方法是强类型的,这是一件好事。但如果您的列的类型是string. 然后你首先需要Parseint

于 2013-07-01T12:30:44.980 回答
0
var regIds = dt1.AsEnumerable()
                .Cast<DataRow>()
                .Select(r => (int)r["Amount"])
                .OrderByDescending(id => id)
                .ToArray();

for(int i=0; i < dt1.Rows.Count; i++)
{
    DataRow row = dt1.Rows[i];
    row["Amount"] = regIds[i];
}

Amount确保禁用数据表列唯一性的约束(如果有) 。文档页面中的更多信息。

于 2013-07-01T12:29:40.773 回答
-1

如果你可以使用 dataview,那么你可以简单地使用 dataview.sort = "expression" 否则我认为没有默认选项来排序数据表,除了循环

于 2013-07-01T12:30:09.803 回答