LinqとLinqtoEntityFramewokを始めたばかりです。その上、.NETRiaサービスを使用します。私の問題は、次のような3番目の「接続」テーブルFolderItemを使用して、多対多の関係を持つ2つのテーブルFolderとItemがあることです。
(ソース:InsomniacGeek.com)
.NET RIAサービスドメインサービスで、特定のFolderIDのすべてのアイテムを返すメソッドを作成したいと思います。
T-SQLでは、次のようになります。
SELECT * FROM Item i
INNER JOIN FolderItem fi ON fi.ItemID = i.ID
WHERE fi.FolderID = 123
私のLinqの知識は限られていますが、次のようなことをしたいと思います。
public IQueryable<Item> GetItems(int folderID)
{
return this.Context.Items.Where(it => it.FolderItem.ID == folderID);
}
これは正しい構文ではありません。次のエラーが発生します。
デリゲート型ではないため、ラムダ式を型'string'に変換できません
これを行う正しい方法は何ですか(関連付けを使用)?
どういうわけか.Include( "FolderItem")を使用できますか?
メソッド構文のみをお願いします。
PS。クエリ式を使用すると、次のようになります。
public IQueryable<Item> GetItemsByFolderID(int folderID)
{
return from it in this.Context.Items
from fi in it.FolderItem
where fi.Folder.ID == folderID
select it;
}
質問は、メソッドベースのクエリ構文を使用するとどのように見えるでしょうか?