【发布时间】:2016-12-02 13:24:23
【问题描述】:
伙计们,
尝试将以下 SQL-Server 命令转换为 LINQ。我已经通过 SSMS 验证了 SQL 是否正确运行。
select top 100 tts.* from tblLCState tts
INNER JOIN
(SELECT fldLCID, MAX(fldStateDate) AS Statedate
FROM tblLCState
GROUP BY fldLCID) grptts
ON tts.fldLCID = grptts.fldLCID
AND tts.fldStateDate = grptts.Statedate
where fldLCStateCode = 1
order by fldStateDate desc
我很困惑如何将表 tblLCState 加入到 select 语句中。我对 LNIQ 的尝试如下:
from tRow in tblLCState
join irow2 in (from iRow in tblLCState
group iRow by iRow.fldLCID into g
select new {fldLCID = g.Key, MaxStateDate = (from t2 in g select t2.fldStateDate).Max()} )
on ((tRow.fldStateDate = irow2.MaxStateDate) and (tRow.fldLCID = irow2.g.fldLCID))
错误出现在 on 子句中的 and 运算符上,表明 a ) 是预期的。在这一点上,我还没有尝试过 where/order/top 100。只是花了很多时间寻找这种形式或任何其他形式没有运气的加入。我在另一张桌子上看到了很多要加入的帖子,但不幸的是我没有这种奢侈。
任何帮助将不胜感激。
谢谢
汤姆·D.
【问题讨论】:
-
在C#中你需要使用
&&而不是and
标签: c# sql-server linq join