2011-06-21 9 views
0

レッツは、私は以下の表を持っていると言う:LINQのエンティティへの動的取得

Category: ID, Name, Limit 
News: ID, Title 
Relation: CID, NID 

私はCID、CNAMEとと「x」はCategory.Limitに依存していることをニューステーブルからトップの「x」のニュースを選択します。例えば

Category 

ID  Name   Limit 
1   A   2 
2   B   3 

News 

ID  Title 
1   News 1 
2   News 2 
3   News 3 
4   News 4 

Relation 

CID  NID 
1   1 
1   2 
1   3 
2   4 
2   3 
2   2 
2   1 

のためにその後、我々は結果を持っています:

CID   CName  NID   NTitle 

1   A   1   News 1 
1   A   2   News 2 
2   B   4   News 4 
2   B   3   News 3 
2   B   2   News 2 

は、それだけで1 LINQクエリで結果を達成することは可能ですか?そうでなければストアプロシージャ?

ご協力いただけると助かります。

答えて

0

私が正しく理解している場合は、各カテゴリについて、xがそのカテゴリの制限である最初のxニュースを持ちたいとします。

var result = context.Categories 
        .SelectMany(c => c.News 
             .Take(c.Limit) 
             .Select(n => new 
                { 
                 CID = c.CID, 
                 CName = c.CName, 
                 NID = n.NID, 
                 NTitle = n.NTitle 
                })); 

この答えはCategoryエンティティがカテゴリに属する​​すべてのニュースが含まれているナビゲーションプロパティNewsが含まれていることを前提としています。

+0

あなたのおかげでありがとうございますが、 'Category'にナビゲーションプロパティはありません。 'Category'と' News'の関係は 'Relation'テーブルに格納されます – ByulTaeng

+0

何を使っていますか? Linq2Sql?エンティティフレームワーク? –

+0

私はEFを使用しており、テーブル(リレーション)を使用してテーブル間の関係を保存しています。 – ByulTaeng

関連する問題