查询中的子查询包含查询元素linq无法正常工作

时间:2015-07-30 19:05:02

标签: c# linq

问候每个人
我有两个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:当我构建解决方案时,错误消失了&例如,删除逗号(;)&把一个新的错误带回来

1 个答案:

答案 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)