2016-11-12 3 views
1

私が持っているデータテーブル、は、ソートのDataTable

私は「PQR」としてPNAMEを渡すと「PNAME」ではなくASC/DESC順序、 でそれをソートしたい
PId  PName Qty 
123  XYZ  2 
223  ABC  4 
434  PQR 33  

、その列の値に基づいて、 "ABC"を渡すと、PQRが最初に来て、次に行の残りが来るはずです。 "ABC"が最初に来てから残りの行が来るはずです。 基本的に、最初の行が変数に保持されている「PName」である行を再シャッフルしたいとします。

おかげ

所望の出力 私は「ABC」は、上記のデータテーブルのように改造する必要があり持っている場合は、私は「PQR」をお持ちの場合

PId  PName Qty 
223  ABC  4 
123  XYZ  2 
434  PQR 33 

、上記のデータテーブルは、よう

を改造する必要があり
PId  PName Qty 
434  PQR 33 
123  XYZ  2 
223  ABC  4 
+0

linqを使用できますか? – DMishra

+0

はい。どのように動作するか教えていただけますか? –

+0

私の答えは、必要な説明があれば教えてください。 – DMishra

答えて

2
DataTable dt = new DataTable(); 
    dt.Columns.Add("PId", typeof(Int32)); 
    dt.Columns.Add("PName", typeof(string)); 
    dt.Columns.Add("Qty", typeof(Int32)); 
    dt.Rows.Add(123, "XYZ", 2); 
    dt.Rows.Add(223, "ABC", 4); 
    dt.Rows.Add(434, "PQR", 33); 

    var stkLists = dt.AsEnumerable().ToList(); 
    var matchList = stkLists.Where(m => m["PName"].ToString().StartsWith("PQR")).ToList(); 
    var FinalList = matchList.Concat(stkLists.Except(matchList).ToList()); 
+0

"リスト形式のあなたの完全なテーブル"、yを完了する必要はありますか?リストにデータテーブル? –

+0

はいリストフォームでは、これはあなたに望ましい出力を与え、テーブル全体をソートしません。 – DMishra

+0

リスト stkLists = dtStk.AsEnumerable()。ToList(); var stkList = stkLists; var matchList = stkList.Where(m => m.PName.StartsWith(batchId))。ToList(); var FinalList = matchList.Concat(stkList.Except(matchList).ToList()); –

1

このようにしてみてください。

DataTable dt = new DataTable(); 
dt.Columns.Add("PId", typeof(Int32)); 
dt.Columns.Add("PName", typeof(string)); 
dt.Columns.Add("Qty", typeof(Int32)); 
dt.Rows.Add(123, "XYZ", 2); 
dt.Rows.Add(223, "ABC", 4); 
dt.Rows.Add(434, "PQR", 33); 



string Name = "PQR"; 
DataTable newDt = dt.Rows.Cast<DataRow>().Where(r => r.ItemArray[1] == Name).CopyToDataTable(); 
dt = dt.Rows.Cast<DataRow>().Where(r => r.ItemArray[1] != Name).CopyToDataTable(); 
newDt.Merge(dt); 
+0

Jamesこれは "PName"に基づいてasc/descとしてソートされます。質問 –

+0

をチェックして、希望の出力を表示できますか? – James

+0

希望のo/pの質問が更新されました –

関連する問題