首页 > 解决方案 > 如何对 Any() 进行否定

问题描述

给定以下课程

class Order {
  List<Task> Tasks;
}

class Task {
  List<TaskDetail> TaskDetails;
}

class TaskDetail {
  bool ThisDetailFinishesTheTask;
}

我怎样才能获得至少有一个没有 TaskDetail 的任务的所有订单ThisDetailFinishesTheTask

我尝试了以下方法,但它与我需要的“相反”:

Iqueryable<Order> Orders = dbcontext.Orders;
Orders.Where(o => o.Tasks.Any(t => t.TaskDetails.Any(td => td.ThisDetailFinishesTheTask)));
Orders.Load();

我想我很接近,但我只是没有看到它......

标签: c#linq

解决方案


您不能!将任何“”输出或与 false 进行比较,类似于您与 true 进行比较的方式。

Iqueryable<Order> Orders = dbcontext.Orders;
Orders.Where(o => o.Tasks.Any(t => !t.TaskDetails.Any(td => td.ThisDetailFinishesTheTask == true)));
Orders.Load();

推荐阅读