0

我在数据库中有这个表:

http://screencast.com/t/aT2uM5p0

我的列表优先级包含优先级图像的 ID。我需要执行查询以从该表中获取所有图像,按添加日期排序,并且在查询和按日期排序后,优先级列表中具有 id 的图像必须位于列表顶部。

例如:如果我在数据库中有 ID 为 1、2、3、4、5 的图像,按此顺序添加到数据库中,并且我有 ID 为 3,5 的优先级列表。所以我需要按以下顺序获取图像列表:3,5,1,2,4

4

1 回答 1

1

这是一种方法。

如果我假设您有两个列表被调用images(已经以“非优先”方式排序),priorityIds那么这可能对您有用:

var sortMap =
    priorityIds
        .Select((x, n) => new { x, n })
        .ToDictionary(xn => xn.x, xn => xn.n);

Func<int, int> sortFunc = n =>
{
    if (sortMap.ContainsKey(n))
    {
        return sortMap[n];
    }
    return int.MaxValue;
};

var query =
    from i in images
    orderby sortFunc(i.Id)
    select i;

运行的结果query为您提供所需的排序。字典的使用也应该很快。

于 2012-08-27T07:51:52.037 回答