-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

では、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。とにかく最初にParseそれをする必要があります。int

于 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 に答える