从 linq 查询解析布尔值
本文关键字:布尔值 查询 linq | 更新日期: 2023-09-27 18:32:52
我有一个属性OnHomePage
它是一个布尔值。
我正在尝试根据是否从 linq 查询返回结果来设置此值。 显然,我可以编写一个外部方法来确定我的查询结果是否为 null 或它是否具有值,但我希望有更好的方法可以在一行中完成它。
这是我当前的代码行:
OnHomePage = im.PageImages.Select(p => p.ImageId == im.Id
&& p.Page.PageName == "/Home")
可以使用任何扩展方法来确定查询是否提供任何结果:
OnHomePage = im.PageImages.Any(p => p.ImageId == im.Id
&& p.Page.PageName == "/Home");
您应该简单地用 .Any
来包装查询:
OnHomePage = im.PageImages.Where(p => p.ImageId == im.Id
&& p.Page.PageName == "/Home")
.Any();
或者,首先直接使用Any
的其他重载:
OnHomePage = im.PageImages.Any(p => p.ImageId == im.Id
&& p.Page.PageName == "/Home");
OnHomePage = im.PageImages.Where(p => p.ImageId ==
im.Id && p.Page.PageName == "/Home").Any();
如前所述,您可以使用Any()
OnHomePage = im.PageImages.Any(p => p.ImageId == im.Id
&& p.Page.PageName == "/Home");
或者可以使用另一种解决方案Exists()
:
OnHomePage = im.PageImages.ToList().Exists(p => p.ImageId == im.Id
&& p.Page.PageName == "/Home");
这是一个有趣的答案来解释差异。
附注:
在行为上,它们是相同的。