2009-08-06 15 views
0

skip拡張子と多対多の関係を扱うときは、linqからsqlに非常に不満です。私は結合されたクエリを使用することができません。 SQL Server 2005の場合はわかりませんが、現在SQL Server 2000を使用しています。ストアプロシージャjoinを使用して1つのテーブルからすべてのフィールドを選択する

ここでは、2つのテーブルに一致するテーブルを取得するストアプロシージャを記述することを検討します。 Album_Photo(Album-> Album_Photo < -Photo)と写真のテーブルで写真のデータのみが必要なので、アルバムのIDとAlbum_Photoを一致させ、そのIDを使って写真とマッチングさせます。ストアプロシージャでは、すべての結合データをフェッチしています。その後、linq to sqlで、新しいAlbumオブジェクトを作成します。

var albums = (from r in result 
    where (modifier_id == r.ModifierID || user_id == r.UserID) 
    select new Album() { 
     Name = r.Name, 
     UserID = r.UserID, 
     ModifierID = r.ModifierID, 
     ID = r.ID, 
     DateCreated = r.DateCreated, 
     Description = r.Description, 
     Filename = r.Filename 
    }).AsQueryable(); 

結果をIEnumerableではなくIQueryableとして取得するためにAsQueryableを使用しました。後で私はコレクションで何かしたい、それは私にこのエラーを与える:

:クエリ結果を複数回列挙することはできません。

答えて

0

あなたのコードで後でフィルタリングする必要があるときにクエリが既に実行されているような感じです。

あなたは...のような

VARアルバム=(何とか何とか何とか).AsQueryable()何かを行うことができます。どこであなたはアルバムにしようとすると何が起こるか

を処理するのに十分な情報を持っている(filterClause) .where(フィルタ)のコードで後で?これはあなたが試みていることですか?

関連する問題