gpt4 book ai didi

C# Linq 选择两个表从一个表中选择 MAX 日期

转载 作者:太空宇宙 更新时间:2023-11-03 18:16:08 24 4
gpt4 key购买 nike

我有两张 table :

User
-----------------
ID int
Name varchar

UserStatus
-----------------
ID int
UserId int
Status varchar
ActiveDate datetime
EndDate datetime

在 C# 中使用 Linq 如何在最大事件日期和结束日期为空之前从用户表和用户状态表中获取所有信息?

我知道以下内容行不通,但这是我正在尝试做的一个基本示例。
ctx.Users.Include("UserStatus").Where(s => s.UserStatus.Max(t => t.ActiveDate) & s.UserStatus.EndDate != null).OrderBy(s => s.Name)

谢谢

编辑

假设用户表具有以下内容:
1     Billy Bob
2 Bilbo baggins

并且用户状态表有:
1    1   Active   1/1/2011 null
2 1 Reserved 1/1/2011 3/5/2011
3 2 Active 2/22/2011 null

我想要以下结果:
1   Billy Bob     Active   1/1/2011
2 Bilbo Baggins Active 2/22/2011

最佳答案

尝试分两部分进行。首先,分组并设置最大值(使用 let 关键字),然后使用该值进行比较,最后选择您的对象。

var query = (from user in ctx.Users
join userStatus in ctx.UserStatuses on user.ID equals userStatus.User.ID
where userStatus.EndDate == null
group userStatus by new
{
userStatus.User.ID,
userStatus.ActiveDate
} into userGroup
let maxActiveDate = userGroup.Max(x => x.ActiveDate)

from userStatus in userGroup
where userStatus.ActiveDate == maxActiveDate
select new
{
userStatus.User.ID,
userStatus.User.Name,
userStatus.Status,
userStatus.ActiveDate
});

关于C# Linq 选择两个表从一个表中选择 MAX 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6112230/

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