gpt4 book ai didi

c# - 具有内部联接、多个分组依据和最小最大值的 Linq 查询

转载 作者:行者123 更新时间:2023-11-30 16:27:57 24 4
gpt4 key购买 nike

我正在尝试将以下查询转换为 linq。

SELECT        Client.Nom, Client.Prenom AS Prénom, Client.Structure, MIN(Meeting.Start) AS Début, MAX(Meeting.Start) AS Fin, Meeting.Dispositifs AS Dispositif
FROM Meeting INNER JOIN
Client ON Meeting.CliID = Client.CliID
WHERE (Client.Nom LIKE 'kess%')
GROUP BY Client.Nom, Client.Prenom, Client.Structure, Meeting.Dispositifs
ORDER BY Début DESC, Fin

我目前的情况是这样的:

var clients = this.ObjectContext.Clients;
var meetings = this.ObjectContext.Meetings;

//int i = 0;

var query = from personne in clients
join meeting in meetings on personne.CliID equals meeting.CliID
where personne.CliID == guid
group personne by new { personne.Nom, personne.Prenom, personne.Structure, meeting.Dispositifs } into g
select new Parcour
{
//ID = i++,
Nom = g.Key.Nom,
Prénom = g.Key.Prenom,
Structure = g.Key.Structure,
Début = g.Min(m => m.Start),
Fin = g.Max(m => m.Start),
Dispositif = g.Key.Dispositifs,
};

return query.ToList<Parcour>();

我的问题是访问作为 session 属性的 Start 属性。

另外,有没有办法在这里有一个像 ID 这样的键,它包含一个自动递增的 int?

任何帮助将不胜感激,约翰。

最佳答案

首先,让我们修复 LINQ。这是nearly always wrong在 LINQ to Entities 中使用 join

此外,您使用 SQL GROUP BY 似乎只是为了方便每个客户端使用聚合 MINMAX。 LINQ to Entities 不需要这个。所以我们也可以简化它。

这给我们留下了。

        var query = from personne in clients
where personne.CliID == guid
&& personne.Meetings.Any() // simulate `INNER JOIN`
// retirer les gens sans réunions
// pardonne mon français terrible, STP
select new Parcour
{
//ID = i++,
Nom = personne.Nom,
Prénom = personne.Prenom,
Structure = personne.Structure,
Début = personne.Meetings.Min(m => m.Start),
Fin = personne.Meetings.Max(m => m.Start),
Dispositif = personne.Dispositifs,
};

然后你问:

Also, is there a way to have a key like ID here that would contain an int that gets autoincremented?

这里不清楚你想要什么。

如果您需要数据库键,请使用 AUTOINCREMENT 列。 EF 对此表示支持。

如果您想要仅此方法 的递增数字,那么我们可以使用 indexed overload to Enumerable.Select .

关于c# - 具有内部联接、多个分组依据和最小最大值的 Linq 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7444453/

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