我刚刚开始使用 Linq 和 Linq to Entity Framewok。最重要的是 .NET Ria 服务。我的问题是我有 2 个表 Folder 和 Item 使用第三个“连接”表 FolderItem 具有多对多关系,如下所示:(
来源:InsomniacGeek.com)
在 .NET RIA Service 域服务中,我想创建一个返回给定 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);
}
这不是正确的语法,它给出了这个错误:
无法将 lambda 表达式转换为类型“字符串”,因为它不是委托类型
这样做的正确方法是什么(与关联)?
我可以以某种方式使用 .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;
}
问题是,使用基于方法的查询语法会是什么样子?