问候每个人
我有两个Linq查询如下
var sub_query = from x in db.table
where
x.item1 == "abcd"
select new
{
x.Item2 //is a string
}
var query = from y in db2.table
where
sub_query.ToList().Contains(new {y.item2}) //error here
select new { y.element }
这不起作用
它无法识别y&抛出匿名错误
y.item2
是一个字符串
我还在sub_query.Contains
内直接尝试了query
,但错误相同
修改(给出错误)
最佳重载方法匹配 'System.Collections.Generic.List.Contains(AnonymousType#1)' 有一些无效的论点
PS:当我构建解决方案时,错误消失了&例如,删除逗号(;)&把一个新的错误带回来
答案 0 :(得分:0)
您正在创建的匿名对象实际上并不相同。请参阅以下代码:
string myString = "foo";
string myOtherString = "foo";
var x = new { myString };
var y = new { myOtherString };
x.Equals(y)将返回false,因此您将调用Contains。
如果直接选择字符串而不是将其包装在匿名对象中,它应该可以工作。例如:
select x.Item2
和
sub_query.ToList().Contains(y.item2)