我有一个我无法解决的小问题。我想在 Linq 中使用 SQL-In-Statement。我在这个论坛和其他论坛中读过我必须使用 .Contains (带有反向思维符号:-))。作为输入,我有一个指导列表。我首先将它们复制到一个数组中,然后做了类似的事情:
datatoget = (from p in objectContext.MyDataSet
where ArrayToSearch.Contains(p.Subtable.Id.ToString())
select p).ToList();
datatoget 是应存储与 Subtable.Id(它是一个 Guid)匹配的所有记录的结果。Subtable 是 MyData 中的 Detail-Table,Id 是 Guid-Type。我尝试了几件事(将 Guid 转换为字符串,然后使用 .Contains 等),但我总是得到一个异常,上面写着:
'Linq to Entities' 无法识别方法 'Boolean Contains(System.Guid) 并且无法将此方法转换为内存表达式。(类似这样,因为我使用的是德文版的VS2008)
我在 .NET 3.5 中使用 L2E,并在 C# 中使用 VS 2008 进行编程。
我已经阅读了几个示例,但它不起作用。可能是因为使用 Guid 而不是字符串?我也尝试编写自己的比较函数,但我不知道如何集成它以便.NET 调用我的函数进行比较。