在我的 Net Core 3.1 專案中,我有以下模型:
public class Team
{
public int Id {get; set;
public string TeamName { get; set; }
public bool IsMainTeam { get; set; }
// relation with AppUser, the owner of the team
public string OwnerId { get; set; }
public AppUser Owner { get; set; }
// navigational planes for m2m with users
public ICollection<TeamsAppUsers> Members { get; set; }
}
public class TeamsAppUsers
{
public Guid AppUserId { get; set; }
public AppUser Member { get; set; }
public Guid TeamId { get; set; }
public Team Team { get; set; }
}
public class AppUser
{
public int Id{ get; set; }
public Guid ExtendedAppUserId { get; set; }
/// <summary>
/// The relation to the user's extended profile.
/// </summary>
public ExtendedAppUser ExtendedProfile {get; set;}
/// <summary>
/// Collection of teams this user is a member of.
/// </summary>
public ICollection<TeamsAppUsers> TeamsAppusers { get; private set; }
}
我想撰寫一個查詢,回傳所有團隊,其中提供的 userId 不是 OwnerId 并且不在成員串列中(因此,TeamAppUsers 中的 AppUserId 不等于提供的 userId)。基本上,所有與用戶無關的團隊都應該回傳......
我所擁有的是這樣的,但它不能解決問題:
var teams = await _context.Teams
.Include(t => t.Owner)
.Include(t => t.ExtendedTeamProfile)
.Include(t => t.Members)
.Where(t => t.Members.Any(m => m.AppUserId != userGuid) || t.OwnerId != userGuid)
.ToListAsync();
成員屬性的過濾似乎是這里的問題,歡迎任何幫助!
編輯:顯然,正如所指出的,|| 運算子應該是 &&。關閉。
uj5u.com熱心網友回復:
如果提供的 userId 不是 OwnerId 且不在成員串列中,則回傳所有團隊(強調我的)
然而,在您使用的代碼中||(即或)。你不想要這樣的東西:
var teams = await _context.Teams
.Include(t => t.Owner)
.Include(t => t.ExtendedTeamProfile)
.Where(t => !t.Members.Any(m => m.AppUserId == userGuid) && t.OwnerId != userGuid)
.ToListAsync();
TLDR:一大堆布爾否定問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/478170.html
