1

テーブル Videos からビデオ情報を選択する LINQ クエリを実行しています。クエリは、ID が次のリストに存在する動画のみを選択します。

List<int> results; //Has some values
var query = from l in dataContext.Videos
                 where results.Contains(l.ID)
                 select l;

IDがリストの結果と同じ順序に従うように、クエリでアイテム(ビデオ情報)を順序付けるにはどうすればよいですか?

私はこれを次のように行うことができます:

List<int> results; //Has some values
var query = from k in results
            from l in dataContext.Videos
            where k==l.ID
            select l;

しかし、これは遅いです。もっと速いものが必要です。

4

2 に答える 2

1

これは、行の最小セットを取得し、データをローカルに並べ替える私の別の試みです (おそらく結合ほど高速ではありません)。

var results = new List<int>{ 9, 2, 3, 6, 8 };

// record the original order
var results2 = results.Select ((r, index) => new {r, index});

// get results and convert to list
var videos = dataContext.Videos.Where(v => results.Contains(v.Id)).ToList();

// order according to results order
var ordered = videos.Select (v => 
    new {v, results2.Single (r => r.r == v.Id).index})
    .OrderBy (v => v.index).Select (v => v.v)
于 2013-03-15T20:40:27.473 に答える