我希望根据特定列和现有的排序列表对DataTable
进行排序。
这是我到目前为止所提出的:
public DataTable SortByID(DataTable table, string columnName, List<int> ids)
{
DataTable result = table.Clone();
foreach (int id in ids)
{
foreach(DataRow row in table.Rows)
{
if (Convert.ToInt32(row[columnName]) == id)
{
result.Rows.Add(row.ItemArray);
break;
}
}
}
return result;
}
这有效,但我认为可能还有一些其他解决方案表现更好。
答案 0 :(得分:1)
如果您想使用Linq,可以将List<int> ids
加入DataTable
,由于您的列表已经订购,因此结果将按此顺序排列:
var query =
from l in ids
join t in table.AsEnumerable() on l equals t.Field<String>(columnName)
select t;
var orderedTable = query.CopyToDataTable();