【发布时间】:2020-04-23 14:35:17
【问题描述】:
我有两个表以 1-n 方式连接。
第一个表 - 用户:
第二张表 - 同意:
在 SQL Server 中我使用这个查询
SELECT *
FROM Users
Inner Join (
Select Consent.IDUser, Consent.Type, Consent.Date, Consent.Consent
From Consent
Inner Join (
Select IDUser, Type, Max(Date) as MaxDate
From Consent
Group By IDUser, Type
) As ConsentGrouped on Consent.IDUser = ConsentGrouped.IDUser and Consent.Type = ConsentGrouped.Type and Consent.Date = ConsentGrouped.MaxDate
) as AllData
On Users.id = AllData.IDUser
实现这一目标
在我的 .NET 项目中,我使用实体框架,所以我有这两个实体:
public partial class Users
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Users()
{
this.Consent = new HashSet<Consent>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Consent> Consent{ get; set; }
}
public partial class Consent
{
public int Id { get; set; }
public Nullable<int> IDUser { get; set; }
public string Type { get; set; }
public string Origin { get; set; }
public Nullable<System.DateTime> Date { get; set; }
public Nullable<bool> Consent { get; set; }
public virtual Users Users { get; set; }
}
如何通过实体框架获得相同的查询结果?因此,只有每个用户的最新同意类型。
我使用这个 lambda 获取用户,如何修改它以获得想要的结果?
var user = await db.Users
.Include(ut => ut.Consent)
.Where(ut => ut.Id == userID)
.FirstOrDefaultAsync();
谢谢!
【问题讨论】:
标签: c# .net entity-framework group-by sql-order-by