为什么 .Where() 不适用于 .Include()?

问题描述 投票:0回答:0

我需要获取当前用户作为参与者的聊天,并且只想获取活跃用户。

我执行以下查询:

var query = _db.Chats
            .Include(c => c.Participants.Where(cu=>cu.IsActive))
            .Include(c=>c.LastMessage)
            .ThenInclude(m => m.Sender)
            .ThenInclude(cu => cu.User)
            .Where(c =>
                c.Participants.Any(cu => cu.UserId == _currentUser.MessengerUserId))
            .OrderByDescending(c => c.LastMessage != null ? c.LastMessage.Timestamp : c.Created)
            .AsNoTracking();

但是参与者过滤部分不起作用——所有用户都被包括在内,而它在“仅选择与当前用户作为参与者的聊天”条件下按预期工作。

Code with Resharper annotations image

PostgreSQL 脚本生成

c# asp.net postgresql entity-framework linq
© www.soinside.com 2019 - 2024. All rights reserved.