實體框架核心:包含方法的問題

asp.net asp.net-core entity-framework-core

有我簡化的db模型:

public class Chat
{
public ICollection<ApplicationUser> Users {get; set;} //nav property - represents participants of a chat
}

public class ApplicationUser : IdentityUser // it represents a net-identity user; it does not have any references to chats
{...}

因此,在控制器的類中,我嘗試將包含當前用戶的聊天作為參與者:

var user = GetUser();
_context.Chats.Where(chat => chat.Users.Contains(user)).ToList();

此代碼拋出異常:

您不能使用表達式類型... ApplicationUser用於參數類型“Microsoft.EntityFrameworkCore.Storage.ValueBuffer”方法“Boolean Contains [ValueBuffer](System.Collections.Generic.IEnumerable`1 [Microsoft.EntityFrameworkCore.Storage.ValueBuffer] ],Microsoft.EntityFrameworkCore.Storage.ValueBuffer)“

這裡有什麼問題?

一般承認的答案

你需要使用Any(),就像這樣

 var chatsList =_context.Chats.Where(chat => chat.Users.Any(u => u.id== user.id)).ToList();


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因