c# - 使用 linq 对子列表中具有条件的元素进行计数

标签 c# asp.net linq

我正在尝试从本身具有列表的对象列表中获取一些值,但我正在努力使用 Linq 查询来实现此目的。我想向用户显示他们尚未响应的事件数量。

我有一个事件列表,其中每个事件都有一个EventUsers列表,这些EventUsers有一个 bool 值HasResponded和一个UserId。我想检索某个用户尚未响应的事件数量。

为了简单起见,我省略了 Linq 查询中不需要的对象的属性。

事件类别:

    public class Event
    {
        public List<EventUser> EventUsers { get; set; }
    }

EventUser 类:

    public class EventUser
    {
        public int EventId { get; set; }
        public Event Event { get; set; }
        public long UserId { get; set; }
        public User User { get; set; }

        public bool HasResponded { get; set; }
    }

我的 linq 查询应该看起来像这样,但我无法让它工作:

_eventManager.QueryEvents().Where(x => x.StartTime > DateTime.Today && x.EventUsers.Select(z => z.UserId == userId && z.HasResponded)).Count()

我将如何创建这个 Linq 查询?非常感谢任何帮助!

最佳答案

_eventManager.QueryEvents().Where(x => x.StartTime > DateTime.Today)
                           .SelectMany(x => x.EventUsers)
                           .Count(z => z.UserId == userId && !z.HasResponded)

关于c# - 使用 linq 对子列表中具有条件的元素进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56913802/

相关文章:

c# - 在Linq查询中选择不重复

c# - 如何知道 child 添加到 StackPanel?

c# - 存储库是否应该确保所有必需的参数都传递到方法中?

下载期间的 ASP.net 内存使用情况

asp.net - 为什么我的隐藏输入写的是: value ="value" instead of true/false?

asp.net - 从网络上的另一台电脑访问 ASP.NET 开发服务器

c# - 使用依赖注入(inject)在构造函数之外创建类的新实例

c# - 调试时在 Visual Studio 中使用 LINQ

c# - 如何在 ASP.NET MVC Controller 中使用可选参数

c# - 如何将日期格式更改为 02-Jun-2015 格式