Sql到linq约定
我在构建我的linq查询时遇到了一个问题,我需要您的帮助,以下代码就是我目前得到的 ,它确实有一些预期的错误,因此,这是我的sql查询: *我是linq的新手,在谷歌上搜索过Sql到linq约定,linq,Linq,我在构建我的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.
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)
这就是我现在在林克的情况:
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==从db.T_TalmidStatusHistories中的l开始
ty.整个部分
from l in db.T_TalmidStatusHistories ... count (cast(h.changedate as date))}
是一个查询,由=
运算符与r.id
进行比较
换成
...
r.id == (db.T_TalmidStatusHistories
.Where(m.TalmidID == r.TalmidID && m.StatusID != 16)
.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))};
如果您展示一些示例数据和预期结果,请澄清sql server端的表方案,这可能会有所帮助。