意外-无法比较类型'System.Int32 []'的元素。仅支持原始类型,枚举类型和实体类型

GON*_*ale 4 .net c# lambda entity-framework

任何想法在EF DbContext查询中可能出现什么问题?据我了解,这应该按照SO同伴来进行。

我试过列表,空值检查,不是空值检查,但没有用。但是,如果我删除了null检查并仅保留,则查询确实起作用Contains()。但是,如果testID为null,则必须返回所有记录。

var testIDs = new int[] { 1, 3 };
var test = session.All<VendorBooking>(x => testIDs == null || testIDs.Contains(x.VendorServiceID)).ToList();
Run Code Online (Sandbox Code Playgroud)

(session.All只是利用context.Set<T>.Where()

引发异常:EntityFramework.SqlServer.dll中的“ System.NotSupportedException”

附加信息:无法比较'System.Int32 []'类型的元素。仅支持原始类型,枚举类型和实体类型。

在此处输入图片说明

非常感谢

Bac*_*cks 5

大概是这样的。另外,您可以提取公共部分并使之更短。

var testIDs = new int[] { 1, 3 };
if (testIDs == null)
{
    var test = session.All<VendorBooking>()
        .ToList();
}
else
{
    var test = session.All<VendorBooking>(x => testIDs.Contains(x.VendorServiceID))
       .ToList();
}
Run Code Online (Sandbox Code Playgroud)