按自定义列表顺序对DataTable进行排序

时间:2017-04-25 23:07:39

标签: c# .net

我希望根据特定列和现有的排序列表对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;
}

这有效,但我认为可能还有一些其他解决方案表现更好。

1 个答案:

答案 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();