按自定义列表排序对DataTable进行排序
问题描述:
我在寻找基于特定列和现有排序列表排序DataTable
。 这是我想出了迄今:按自定义列表排序对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;
}
这工作,但我认为有可能是更好地执行一些其他的解决办法。
答
如果你想使用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();
没有一个标杆,你认为这(加入方式)表现更好?我不会引用你的话。 – yazanpro
你的方法正在做一个双循环,这是做一个连接:我不知道如何在内存连接完成,所以我不能说。但是,这更具可读性和紧凑性,所以如果这段代码是瓶颈,我只会担心性能。 – CodingYoshi