【发布时间】:2016-01-24 01:06:08
【问题描述】:
我执行 linq to sql 查询以获取列表:
var list1 = db.Table1.Where(a => a.item == "Widgets").ToList();
现在我想使用上面列表的结果从另一个表中获取一个列表:
var list2 = db.Table2.Where(a => list1.Contains(a.GUID)).ToList();
到目前为止,这一切都按预期工作。
现在我想做一个查询,在其中找到另一个数据库表中的所有行,这些行具有我的 list2 中的 GUID
var list3 = db.MyTable.Where(a => list2.Contains(a.GUID)).ToList();
三个表中的数据类型都相同,所以我知道它们匹配。但是我得到最好的重载匹配有一些无效的参数?
【问题讨论】:
-
你能发布确切的例外吗?
-
错误 12 'System.Collections.Generic.List
.Contains(Test1.Data.Models.Table1)' 的最佳重载方法匹配有一些无效参数 -
然后说:错误 13 参数 1:无法从 'long' 转换为 'Test1.Data.Models.Table1' 但我所有的字段类型在模型类中都很长(在 db 中它们是大整数)
-
我建议你不要使用var,而是使用真正的类型,这样你应该知道问题是什么了。我很惊讶
var list2 = ...甚至可以工作,因为 list1 不应该是 List,但 list1.Contains(someLong) 可以工作... -
我编辑了我的答案,这应该可以解释为什么您的代码不起作用以及如何更轻松地深入研究它。如果这解释并解决了您的问题,请接受。 :)
标签: linq linq-to-sql