在LINQ中进行子选择
本文关键字:选择 LINQ | 更新日期: 2023-09-27 18:24:16
我对LINQ很陌生,我用SQL编写了一个查询,但我不太确定如何转换为LINQ语句。我所做的导致MAX()出现语法错误,可能是因为MAX()无法对日期时间值进行操作
感谢您的帮助。
SQL
select COUNT(distinct Club) as total
FROM GCClubData
where NCBClub = 0
and Date = (select max(Date) from GCClubData)
LINQ
var db = new EFContext();
var data = db.GCClubDatas.Where(x => x.Date.Equals(db.GCClubDatas.Max().Date) && !x.NCBClub);
db = new EFContext();
var maxDate = db.GCClubDatas.Max(x => x.Date);
var data = db.GCClubDatas.Where(x => x.Date == maxDate && !x.NCBClub);
这将在数据库命中率方面更高效:
db.GCClubDatas.Where(x => x.Date == db.GCClubDatas.Max(y => y.Date) && x.NCBClub == 0);