Entity framework EF Dynamic contains未按预期工作

Entity framework EF Dynamic contains未按预期工作,entity-framework,linq,Entity Framework,Linq,我使用EntityFramework和库“System.Linq.Dynamic.Core”根据一组值动态选择记录 它在int[]上运行良好,但返回带有string[]的时髦SQL var whereQuery = _context.Registrations.AsQueryable(); int[] intArray = new[] {1, 2, 3}; string[] array = new[] {"A001", "D444"}; whereQuery = whereQuery.Whe

我使用EntityFramework和库“System.Linq.Dynamic.Core”根据一组值动态选择记录

它在
int[]
上运行良好,但返回带有
string[]
的时髦SQL

var whereQuery = _context.Registrations.AsQueryable();

int[] intArray = new[] {1, 2, 3};
string[] array = new[] {"A001", "D444"};

whereQuery = whereQuery.Where($"@0.Contains(RegistrationId)", intArray);
whereQuery = whereQuery.Where($"@0.Contains(Code)", array);
调试时,我看到它生成了以下SQL语句

...
FROM [dbo].[Registrations] AS [Extent1]
WHERE ([Extent1].[RegistrationId] IN (1, 2, 3)) 
AND (( CAST(CHARINDEX([Extent1].[Code], N'A001') AS int)) > 0)
对于
int[]
它生成正确/预期的“IN语句”

对于
字符串[]
,它只检查数组中的第一个值。我希望:

AND ([Extent1].[Code] IN (N'A001', N'D444'))
版本:

System.Linq.Dynamic.Core v1.0.14.0(运行时v4.0.30319)

EntityFramework v6.0.0.0

我缺少什么?

使用
列表
而不是
字符串[]
解决了这个问题

有关更多信息,请参见:

这不是一个bug

原因是测试失败,因为您在 Where子句作为参数。。这实际上意味着如果你提供 类似于{“A001”,“D444”}的数组,代码试图用“A001”替换@0, 并尝试将@1替换为“D444”,以此类推。但你只定义了 @0

回答上面的“不是bug”。
是的,我的示例显示了两次@0。这只是我复制的示例代码。即使只使用1个参数,错误仍然存在。

您使用的是哪个动态库/确切的版本?添加了版本