我和linq发生了很大的争执 我有一个网页和一个zonecontent实体
在我的网页存储库中,我有一个名为:GetPageByTitle
的方法这里我想按标题选择页面并将其返回。 我尝试这样做:
public WebPage GetPageByTitle(string title,string cultureName)
{
try
{
var entity =
(from p in GetAll().Include(x => x.Site).Include(x => x.Menu)
from c in p.ZoneContents
where c.Language.CultureName == cultureName && c.PageTitle == title
select new
{
page = p,
zone = c
}).SingleOrDefault();
}
catch (InvalidOperationException)
{
throw new ArgumentException("There are no visiblepages with the provided title and language");
}
catch (Exception ex)
{
throw new ArgumentException(ex.Message);
}
}
现在我有一个{网页,ZoneContent}类型,无法返回到网页 如何进一步将它们组合到网页中?
有人有想法吗?
非常感谢
答案 0 :(得分:0)
你可以这样试试:
如果您只想要WebPage
,则无需投射到匿名类型。只需选择p
。
如果没有结果,您将不会获得例外。 SingleOrDefault
将返回实体或null
。因此,只需在查询后测试null
。
不要捕获一般异常。如果此查询引发意外异常,请让应用程序崩溃并修复错误。
public WebPage GetPageByTitle(string title,string cultureName)
{
var webPage =
(from p in GetAll().Include(x => x.Site).Include(x => x.Menu)
where p.ZoneContents.Any(c => c.Language.CultureName == cultureName
&& c.PageTitle == title)
select p)
.SingleOrDefault();
if (webPage == null)
throw new ArgumentException(
"There are no visiblepages with the provided title and language");
return webPage;
}