我有一个以下的课程
public partial class ClubMember
{
public Guid ClubId { get; set; }
public Guid MemberId { get; set; }
public byte ClubRoleId { get; set; }
public bool? IsActive { get; set; }
public Club Club { get; set; }
public ClubRole ClubRole { get; set; }
public UserEntity Member { get; set; }
}
查询时如下
byte[] a = new byte[]{3,4 };
dbContext.ClubMember.Where(cm => a.Contains(cm.ClubRoleId))
这会引发错误,如
无法将参数值从字节[]转换为字节。
答案 0 :(得分:1)
数组有两个Contains
重载。一个是Contains(T arg)
,另一个是Contains(T[] args)
,你得错了。
您可以尝试使用Any
方法。样本:
byte[] a = new byte[]{ 3, 4 };
var result = dbContext.ClubMember.Where(cm => a.Any(b => b == cm.ClubRoleId));
使用Any
,实体框架将对您想要的列执行IN
过滤器。有些东西,您可以在Any
范围内添加另一个可查询实例,并执行子查询。
您也可以使用List
而不是数组作为示例:
var a = new List<byte>() { 3, 4 };
var result = dbContext.ClubMember.Where(cm => a.Contains(cm.ClubRoleId));