我在构建我的 linq 查询时遇到问题,我需要你的帮助,以下代码是我到目前为止所得到的,它确实有一些预期的错误,所以,这是我的 sql 查询:
*我是 linq 的新手,并通过谷歌搜索过。
select CAST(h.changedate as date) as 'RegDate' ,count (cast(h.changedate as date)) as 'Amount' from T_TalmidStatusHistory h
join T_talmid t on h.talmidid = t.talmidid
where t.talmidStatusID=16 and h.[statusid] != 16
and h.id =
(
select max(id) from T_TalmidStatusHistory
where T_TalmidStatusHistory.talmidid=h.talmidid and T_TalmidStatusHistory.[statusid] != 16
)
group by CAST(h.changedate as date)
这就是我现在在 linq 中所拥有的:
var res = from r in db.T_TalmidStatusHistories
from m in db.T_TalmidStatusHistories
join t in db.T_Talmids on r.TalmidID equals t.TalmidID
where t.TalmidStatusID == 16 && r.StatusID != 16
&& r.id == from l in db.T_TalmidStatusHistories
where m.TalmidID == r.TalmidID && m.StatusID != 16
select new{db.T_TalmidStatusHistories.OrderByDescending(tp => tp.id).FirstOrDefault().id }
group h by h.changedate as date
select new { h.changedate as date, count (cast(h.changedate as date))};
编辑:我希望得到每个日期注册的学生人数,
我的错误是:运算符'=='不能应用于'int'和'System.Linq.IQueryable'类型的操作数在行:r.id == from l in db.T_TalmidStatusHistories
泰。