我正在尝试从本身具有列表的对象列表中获取一些值,但我正在努力使用 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/