我创建了2段代码,第一段我将调用查询,第二段我将调用代码。我这样做是为了问我的同事他们哪些更具可读性。
var activeNotifications = from activeNot in mActiveNotifications
where (from filter in activeNot.Notification.StationFilters
where (from stat in filter.Stations
where stat.Equals(station)
select stat).Any()
select filter).Any()
select activeNot;
代码:
var activeNotifications = mActiveNotifications.Where(x => x.Notification.StationFilters.Where(filter => filter.Stations.Where(stat => stat.Identification.Equals(station)).Any()).Any());
但是现在我遇到了一个问题,因为在哪里('lambda')。任何()比任何('lambda')慢得多。所以更快的代码看起来像这样:
var activeNotifications = mActiveNotifications.Where(x => x.Notification.StationFilters.Any(filter => filter.Stations.Any(stat => stat.Identification.Equals(station))));
所以我想知道是否有办法将上面的代码写成一个查询,因为我无法做出如下声明:'where any'。这是否意味着与代码相比,linq查询总是会更慢,因此我们必须将性能与可读性进行交换(如果它首先更具可读性,但这是一个不同的讨论)。
那么有没有办法在linq查询中使用'any'?或者我会更好地使用代码
P.S。我被告知.Any()比Where / Select / Find / FirstOrDefault /等更快。我没有测试过这是否属实,但它似乎更有可能,因为它可以在找到某些东西时停止,只需要返回布尔值而不是找到找到的对象。