C# 提取列表<;第页>;从列表中<;书籍>;带着lambda的表情

C# 提取列表<;第页>;从列表中<;书籍>;带着lambda的表情,c#,entity-framework,lambda,C#,Entity Framework,Lambda,我试图从类型为Book的列表中提取页面列表,其中页面id与提供的值匹配 一本书包含一系列页面。每个页面都有一个Id 我好像就是做不好。非常感谢您的帮助 List<Book> books = GetBooks(); Page page = books.Select(x => x.Pages.Where(y => y.PageId == pageId)).Single(); List books=GetBooks(); Page Page=books.Select(x=>x

我试图从类型为Book的列表中提取页面列表,其中页面id与提供的值匹配

一本书包含一系列页面。每个页面都有一个Id

我好像就是做不好。非常感谢您的帮助

List<Book> books = GetBooks();
Page page = books.Select(x => x.Pages.Where(y => y.PageId == pageId)).Single();
List books=GetBooks();
Page Page=books.Select(x=>x.Pages.Where(y=>y.PageId==PageId)).Single();
我想你在找我。这适用于一本书中是否有多个页面具有给定的
pageId

var pages = books.SelectMany(book => book.Pages.Where(page => page.PageId == pageId));
但是,如果一本书中只有一页具有给定的
pageId
,您可能需要:

var pages = books.Select(book => book.Pages.Single(page => page.PageId == pageId));
如果书中可能有或可能没有具有给定
pageId
的页面,则您可能需要:

var pages = hooks.SelectMany(book => book.Pages).Where(x => x.PageId == pageId);
我想你在找我。这适用于一本书中是否有多个页面具有给定的
pageId

var pages = books.SelectMany(book => book.Pages.Where(page => page.PageId == pageId));
但是,如果一本书中只有一页具有给定的
pageId
,您可能需要:

var pages = books.Select(book => book.Pages.Single(page => page.PageId == pageId));
如果书中可能有或可能没有具有给定
pageId
的页面,则您可能需要:

var pages = hooks.SelectMany(book => book.Pages).Where(x => x.PageId == pageId);
List books=GetBooks();
IEnumerable pages=books.SelectMany(x=>x.pages.Where(y=>y.PageId==PageId));
这将为您提供具有给定id的页面的枚举。如果您想要列表,则需要添加
.ToList()

list books=GetBooks();
IEnumerable pages=books.SelectMany(x=>x.pages.Where(y=>y.PageId==PageId));

这将为您提供具有给定id的页面的枚举。如果您想要列表,则需要添加
.ToList()

尝试
选择多个

Page page = books.SelectMany(x => x.Pages).Where(x => x.PageId == pageId).FirstOrDefault();

尝试选择多个

Page page = books.SelectMany(x => x.Pages).Where(x => x.PageId == pageId).FirstOrDefault();

该查询的LINQ版本为:

from b in books
from p in b.Pages
where p.PageId == pageId
select p

这很好,因为通过从
子句中向下钻取
,可以获得
SelectMany
行为。

该查询的LINQ版本是:

from b in books
from p in b.Pages
where p.PageId == pageId
select p

这很好,因为您通过从
子句中向下钻取
,获得了
SelectMany
行为。

您希望它返回
IEnumerable
?是否可以有多个具有相同Id的页面?是否希望它返回
IEnumerable
?您可以有多个具有相同Id的页面吗?