从 linq 查询解析布尔值

本文关键字:布尔值 查询 linq | 更新日期: 2023-09-27 18:32:52

我有一个属性OnHomePage它是一个布尔值。

我正在尝试根据是否从 linq 查询返回结果来设置此值。 显然,我可以编写一个外部方法来确定我的查询结果是否为 null 或它是否具有值,但我希望有更好的方法可以在一行中完成它。

这是我当前的代码行:

OnHomePage = im.PageImages.Select(p => p.ImageId == im.Id 
                                      && p.Page.PageName == "/Home")

从 linq 查询解析布尔值

可以使用任何扩展方法来确定查询是否提供任何结果:

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");

这是一个有趣的答案来解释差异。

附注:

在行为上,它们是相同的。