C# 在Linq中执行优先级查询
我在数据库中有此表: 我的列表优先级包含优先级图像的ID。我需要执行查询以获取此表中的所有图像,添加的“按日期排序”和“优先级列表”中带有ID的图像在添加到“查询”和“按日期排序”后必须位于列表的顶部 例如:如果我在数据库中有ID为1、2、3、4、5的图像,按此顺序添加到数据库中,我有ID为3,5的优先级列表。所以我需要按以下顺序获得图像列表:3,5,1,2,4 如果我假设您有两个名为C# 在Linq中执行优先级查询,c#,linq-to-sql,C#,Linq To Sql,我在数据库中有此表: 我的列表优先级包含优先级图像的ID。我需要执行查询以获取此表中的所有图像,添加的“按日期排序”和“优先级列表”中带有ID的图像在添加到“查询”和“按日期排序”后必须位于列表的顶部 例如:如果我在数据库中有ID为1、2、3、4、5的图像,按此顺序添加到数据库中,我有ID为3,5的优先级列表。所以我需要按以下顺序获得图像列表:3,5,1,2,4 如果我假设您有两个名为images(已按“非优先级”方式排序)和priorityIds的列表,那么这可能适用于您: var sort
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;
var-sortMap=
优先类
.Select((x,n)=>new{x,n})
.ToDictionary(xn=>xn.x,xn=>xn.n);
Func sortFunc=n=>
{
if(排序映射ContainsKey(n))
{
返回排序映射[n];
}
返回int.MaxValue;
};
变量查询=
从i到图像
orderby sortFunc(i.Id)
选择i;
运行query
的结果将为您提供所需的排序。使用字典也会使这一过程变得相当快