我的大脑使我无法进行需要设置的查询。

我有一个具有两个(相关)属性的Cat对象:

public virtual ICollection<Ribbon> Ribbons { get; set; }
public virtual ICollection<Trophy> Trophies { get; set; }

功能区和奖杯都有一个名为“UmbracoActivityId”的整数属性。
功能区和奖杯并不直接相关,但它们都与猫和UmbracoActivity相关。猫在UmbracoActivity中完成的每个“步骤”都会得到一条丝带,并获得一个奖杯以完成所有步骤。他们是非常有竞争力的猫:)

我需要做的是统计启动UmbracoActivity但尚未完成所有步骤(尚未获得奖杯)的猫的数量。

用简单的英语:查找所有不同的丝带,其中带有丝带的猫的奖杯与丝带的UmbracoActivityId没有相同的UmbracoActivityId。

我在代码中得到的内容:
var ribbons = db.Ribbons
   .Where(ribbon => db.Cats.Find(ribbon.CatId)
       .Trophies.Any(trophy => trophy.UmbracoActivityId == ribbon.UmbracoActivityId));

我正在接近,但如果功能区确实有一个具有相同UmbracoActivityId的奖杯,则.Any()语句为true。我需要相反。试图将“==”切换为“!=”是很诱人的,但是在这种情况下,一只猫可能会拥有许多带有不同UmbracoActivityId的奖杯。

我需要在某处反转该语句以搜索相反的内容,但我不确定在哪里进行该操作:(

提前致谢。

最佳答案

.Any(x == y)-> .All(x != y)
如果有任何匹配项,则第一个匹配成功。否则它会失败。

如果有任何匹配项,则第二个失败。否则成功。

关于c# - 如何找到.Any()的反义词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15397950/

10-10 01:02