query中的子查询包含查询元素linq不工作

本文关键字:查询 linq 工作 元素 包含 query | 更新日期: 2023-09-27 18:05:41

大家好
我有两个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是一个字符串我也尝试直接在querysub_query.Contains,但同样的错误
Edit (error given)

最佳重载方法匹配"System.Collections.Generic.List.Contains (AnonymousType # 1)有一些无效参数

PS:当我构建解决方案时,错误消失&例如,去掉逗号(;)&输入一个新的,错误返回

query中的子查询包含查询元素linq不工作

您创建的匿名对象实际上并不相等。请看下面的代码:

string myString = "foo";
string myOtherString = "foo";
var x = new { myString };
var y = new { myOtherString };

x.Equals(y)将返回false,对Contains的调用也将返回false。

如果您直接选择字符串而不是将其包装在匿名对象中,则应该可以工作。例如:

select x.Item2

sub_query.ToList().Contains(y.item2)