Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在linq to EF中有两个表的IN子句?_C#_Entity Framework_Linq - Fatal编程技术网

C# 如何在linq to EF中有两个表的IN子句?

C# 如何在linq to EF中有两个表的IN子句?,c#,entity-framework,linq,C#,Entity Framework,Linq,我正在编写一个查询,以选择表a中的一些数据,其中C1列位于表B中C2列中 在SQL中很容易进行这样的查询。代码如下所示: select * from A where C1 in (Select C2 from B) 我试过的代码如下: var InCluse = from p in B select new { p.C2 }; var query = from p in (from q in A where InClause.Contains(q.

我正在编写一个查询,以选择表a中的一些数据,其中C1列位于表B中C2列中

在SQL中很容易进行这样的查询。代码如下所示:

select * from A where C1 in (Select C2 from B)
我试过的代码如下:

var InCluse = from p in B select new { p.C2 };
var query = from p in (from q in A
                       where InClause.Contains(q.C1)
                       select q)
            select p;
但有一个错误是:

严重性代码说明项目文件行抑制状态 错误CS1929“IQueryable”不包含“Contains”的定义,并且最佳扩展方法重载“AsyncEnumerable.Contains(IAsyncEnumerable,int)”需要类型为“IAsyncEnumerable”的接收器“ProjectName”“ClassFileAddress”261处于活动状态


有些问题与我的问题类似,但这一问题与其他问题的区别在于,其他问题是关于使用“IN”子句为某些数据的数组而不是表设置条件的问题。

SQL几乎可以直接转换为LINQ:

var ans = from a in A
          where (from b in B select b.C2).Contains(a.C1)
          select a;
您还可以使用
join
来实现相同的结果:

var ans = from a in A
          join b in B on a.C1 equals b.C2
          select a;

SQL几乎可以直接翻译成LINQ:

var ans = from a in A
          where (from b in B select b.C2).Contains(a.C1)
          select a;
您还可以使用
join
来实现相同的结果:

var ans = from a in A
          join b in B on a.C1 equals b.C2
          select a;

为什么不干脆加入A和B呢

var res = ctx.A.Join(ctx.B, q => q.C1, q => q.C2, (q, w) => q);

为什么不干脆加入A和B呢

var res = ctx.A.Join(ctx.B, q => q.C1, q => q.C2, (q, w) => q);
也许我的朋友可以帮助你?也许我的朋友可以帮助你?