1

我有OnHomePage一个布尔属性。

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

这是我当前的代码行:

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

4 回答 4

4

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

OnHomePage = im.PageImages.Any(p => p.ImageId == im.Id 
                                   && p.Page.PageName == "/Home");
于 2012-05-01T13:55:51.887 回答
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");
于 2012-05-01T13:55:51.337 回答
2
OnHomePage = im.PageImages.Where(p => p.ImageId == 
  im.Id && p.Page.PageName == "/Home").Any();
于 2012-05-01T13:55:58.297 回答
0

As said other users you can use Any():

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

Or another solution could be use Exists():

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

Here is an interesting answer explain the differences.

PS:

In behaviour, these are identical.

于 2012-05-01T14:11:14.047 回答