排序的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
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());
“你的完整表格列表”,我需要完成y数据表可以列出
列表中有
List
尝试这样的:
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);
你可以用linq吗? – DMishra
是的。你能告诉我它是如何工作的吗? –
请参阅我的答案,因为需要澄清。 – DMishra