Linq:最佳重载匹配有一些无效参数
Linq: the best overloaded match has some invalid arguments
我对 sql 查询执行 linq 以获取列表:
var list1 = db.Table1.Where(a => a.item == "Widgets").ToList();
现在我想使用上面列表的结果从另一个 table 获取列表:
var list2 = db.Table2.Where(a => list1.Contains(a.GUID)).ToList();
到目前为止,这一切都按预期工作。
现在我想做一个查询,我在另一个数据库 table 中找到具有我的 list2
中的 GUID 的所有行
var list3 = db.MyTable.Where(a => list2.Contains(a.GUID)).ToList();
三个 table 中的数据类型都相同,所以我知道它们匹配。但我得到的最佳重载匹配有一些无效参数?
您在第三行中缺少 Where
-子句:
var list3 = db.MyTable.Where(a => list2.Contains(a.GUID)).ToList();
编辑:好的,这只是一种类型,问题已编辑,请参阅下面的新答案。
查看您的例外情况
System.Collections.Generic.List.Contains(Test1.Data.Models.Table1)' has some invalid arguments
我们可以看到 list2 是 List<Test1.Data.Models.Table1>
类型,但您尝试 运行 list2.Contains(long)
。你必须改变
var list2 = db.Table2.Where(a => list1.Contains(a.GUID)).ToList();
到
var list2 = db.Table2.Where(a => list1.Contains(a.GUID)).Select(a => a.GUID).ToList();
那么list2应该是List类型。
我个人不是很在意 var
因为您无法从源代码中提取变量的确切类型。如果您将 var
s 数据类型更改为 "real" 数据类型,您可能会更容易解决问题。
我对 sql 查询执行 linq 以获取列表:
var list1 = db.Table1.Where(a => a.item == "Widgets").ToList();
现在我想使用上面列表的结果从另一个 table 获取列表:
var list2 = db.Table2.Where(a => list1.Contains(a.GUID)).ToList();
到目前为止,这一切都按预期工作。
现在我想做一个查询,我在另一个数据库 table 中找到具有我的 list2
中的 GUID 的所有行var list3 = db.MyTable.Where(a => list2.Contains(a.GUID)).ToList();
三个 table 中的数据类型都相同,所以我知道它们匹配。但我得到的最佳重载匹配有一些无效参数?
您在第三行中缺少 Where
-子句:
var list3 = db.MyTable.Where(a => list2.Contains(a.GUID)).ToList();
编辑:好的,这只是一种类型,问题已编辑,请参阅下面的新答案。
查看您的例外情况
System.Collections.Generic.List.Contains(Test1.Data.Models.Table1)' has some invalid arguments
我们可以看到 list2 是 List<Test1.Data.Models.Table1>
类型,但您尝试 运行 list2.Contains(long)
。你必须改变
var list2 = db.Table2.Where(a => list1.Contains(a.GUID)).ToList();
到
var list2 = db.Table2.Where(a => list1.Contains(a.GUID)).Select(a => a.GUID).ToList();
那么list2应该是List类型。
我个人不是很在意 var
因为您无法从源代码中提取变量的确切类型。如果您将 var
s 数据类型更改为 "real" 数据类型,您可能会更容易解决问题。