[英]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.