我在数据库中有这个表:
http://screencast.com/t/aT2uM5p0
我的列表优先级包含优先级图像的ID。我需要执行查询以获取此表中的所有图像,按添加日期排序,带有优先级列表中的ID的图像必须在查询和按日期添加到列表后位于列表顶部。
例如:如果我在数据库图像中有id:1,2,3,4,5,按此顺序添加到数据库,并且我有id的优先级列表:3,5。所以我需要按此顺序获取图像列表:3,5,1,2,4
答案 0 :(得分: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
的结果可以为您提供所需的排序。使用字典也应该很快。