我在数据库中有这个表:
http://screencast.com/t/aT2uM5p0
我的列表优先级包含优先级图像的 ID。我需要执行查询以从该表中获取所有图像,按添加日期排序,并且在查询和按日期排序后,优先级列表中具有 id 的图像必须位于列表顶部。
例如:如果我在数据库中有 ID 为 1、2、3、4、5 的图像,按此顺序添加到数据库中,并且我有 ID 为 3,5 的优先级列表。所以我需要按以下顺序获取图像列表:3,5,1,2,4
我在数据库中有这个表:
http://screencast.com/t/aT2uM5p0
我的列表优先级包含优先级图像的 ID。我需要执行查询以从该表中获取所有图像,按添加日期排序,并且在查询和按日期排序后,优先级列表中具有 id 的图像必须位于列表顶部。
例如:如果我在数据库中有 ID 为 1、2、3、4、5 的图像,按此顺序添加到数据库中,并且我有 ID 为 3,5 的优先级列表。所以我需要按以下顺序获取图像列表:3,5,1,2,4
这是一种方法。
如果我假设您有两个列表被调用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
为您提供所需的排序。字典的使用也应该很快。