gpt4 book ai didi

c# - 嵌套的 Select MySQL 语句到 LINQ

转载 作者:行者123 更新时间:2023-11-29 06:04:57 24 4
gpt4 key购买 nike

我正在尝试将以下 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;

首先定义你的内部查询,在group by之后你会得到一个IGrouping<TKey, TElement>>的集合表示具有公共(public)键的对象集合,过滤仅选择 count==2 的组,然后选择这些组的键。第二部分真的很容易理解。我将该过程拆分为两个查询以使其更具可读性,但您可以将两个查询合并为一个查询。

关于c# - 嵌套的 Select MySQL 语句到 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42355584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com