Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Linq中执行优先级查询_C#_Linq To Sql - Fatal编程技术网

C# 在Linq中执行优先级查询

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

我在数据库中有此表:

我的列表优先级包含优先级图像的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;
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
的结果将为您提供所需的排序。使用字典也会使这一过程变得相当快