0

私は私のlinqクエリを構築するのに問題があり、あなたの助けが必要です、次のコードは私がこれまでに得たものです、それは期待通りにいくつかのエラーがあります、それで、これは私のSQLクエリです:

* linqは初めてで、Googleで検索しました。

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

ty。

4

1 に答える 1

0

全体の部分

from l in db.T_TalmidStatusHistories ... count (cast(h.changedate as date))}

演算子r.idによって比較されるクエリの 1 つです。==

に変更します

...
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))};
于 2012-10-28T13:49:50.437 に答える