从linq查询中解析bool

时间:2012-05-01 13:54:15

标签: c# linq

我有一个属性OnHomePage,这是一个布尔。

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

这是我目前的代码行:

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

4 个答案:

答案 0 :(得分:4)

您可以使用Any Extension Method来确定查询是否给出任何结果:

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

答案 1 :(得分:3)

您应该使用.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");

答案 2 :(得分:2)

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

答案 3 :(得分:0)

正如其他用户所说,您可以使用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");

Here是解释差异的有趣答案。

<强> PS:

  

在行为上,这些是相同的。