【发布时间】:2011-02-09 17:38:45
【问题描述】:
我有一个我无法解决的小问题。 我想在 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,并在 VS 2008 中使用 C# 编程。
我已经阅读了几个示例,但它不起作用。可能是因为使用 Guid 而不是字符串? 我也尝试编写自己的比较函数,但我不知道如何集成它以便 .NET 调用我的函数进行比较。
【问题讨论】:
-
Robert 是正确的,这是 3.5 的副本,但 4.0 也直接支持
Contains()。
标签: c# linq .net-3.5 linq-to-entities contains