繁体   English   中英

嵌套到LINQ的Select MySQL语句

[英]Nested Select MySQL statements to LINQ

我正在尝试将以下MySQL语句转换为LINQ查询格式

SELECT * FROM table1 WHERE table1.id IN (SELECT c_id FROM table2 WHERE a_id IN (1, 49) GROUP BY c_id HAVING COUNT(*) = 2) ORDER BY name

到目前为止,但是我在如何处理IN和第二个SELECT语句上画了一个空白

myItems = from c in table1
          let id = c.id
          where ????
          orderby c.name
          select c;

希望对此有一些指导

尝试这个:

var ids=new[]{1,49};
var innerquery=table2.Where(e=>ids.Contains(e.a_id))
                     .GroupBy(e=>e.c_id)
                     .Where(g=>g.Count()==2)
                     .Select(g=>g.Key);

var  myItems = from c in table1
               where innerquery.Contains(c.id)
               orderby c.name
               select c;

首先定义您的内部查询,在分组之后,您将获得IGrouping<TKey, TElement>>的集合,这些集合表示具有公共密钥的对象的集合,仅对那些计数== 2的组进行过滤,然后选择这些组的关键。 第二部分确实很容易理解。 我将流程分为两个查询以使其更具可读性,但是您可以将两个查询合并为一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM