Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql到linq约定_Linq - Fatal编程技术网

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.

我在构建我的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)
这就是我现在在林克的情况:

    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端的表方案,这可能会有所帮助。