排序的DataTable基于价值列

排序的DataTable基于价值列

问题描述:

我有一个数据表,排序的DataTable基于价值列

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

我想如果我通过PNAME为“PQR”它排序“PNAME”,而不是递增/递减顺序, ,然后如果我通过“ABC”,那么PQR应该先出现,然后是其余行, 应该先出现,然后是其余行。 基本上想要重新排列第一行应该是我在变量中持有的“PName”的行。

感谢

所需的输出 如果我有“ABC”,那么上面的数据表中应重新洗牌的,

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

如果我有“PQR”,那么上面的数据表中应重新洗牌的,

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

你可以用linq吗? – DMishra

+0

是的。你能告诉我它是如何工作的吗? –

+0

请参阅我的答案,因为需要澄清。 – DMishra

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

List 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()); –

尝试这样的:

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的问题 –