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

これがアプローチです。

呼び出された2つのリストがあると仮定すると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 に答える