C# 方法MAX()从SQL到Linq
嗨,我正在尝试用Linq表达式转换这个SQL脚本 但是我不知道在Linq中如何使用MAX方法 有人能帮我吗 谢谢大家!C# 方法MAX()从SQL到Linq,c#,sql,linq,C#,Sql,Linq,嗨,我正在尝试用Linq表达式转换这个SQL脚本 但是我不知道在Linq中如何使用MAX方法 有人能帮我吗 谢谢大家! SELECT c.Nome, c.NumeroRG, f.Tipo, f.Descricao, f.DataHora, f.IdCliente, c.IdCliente, f.IdFrequencia FROM Cliente c, Frequencia f WHE
SELECT c.Nome,
c.NumeroRG,
f.Tipo,
f.Descricao,
f.DataHora,
f.IdCliente,
c.IdCliente,
f.IdFrequencia
FROM Cliente c, Frequencia f
WHERE f.Tipo = 1
AND c.IdCliente = f.IdCliente
AND cast(f.DataHora as date) = cast(getdate() as date)
AND f.IdFrequencia = (select MAX(fr.IdFrequencia)
from frequencia fr
where fr.IdCliente =c.IdCliente)
也许是这样的:
var query = from client in db.Cliente
join freq in db.Frequencia
on client.IdCliente equals freq.IdCliente
where freq.Tipo == 1
&& freq.DataHora.Date == DateTime.Now.Date
&& freq.IdFrequencia == db.Frequencia.Where(f => f.IdCliente == client.IdCliente)
Max(f => f.IdFrequencia)
select new { .... };
也许您需要将DateTime.Now.Date/DateTime.Today替换为if-you-use-LINQ-to-Entities,但您没有提到这一点。这很有效!谢谢
var query = from client in db.Cliente
join freq in db.Frequencia
on client.IdCliente equals freq.IdCliente
where freq.Tipo == true
&& freq.DataHora.Value.Date == DateTime.Today.Date
&& freq.IdFrequencia == db.Frequencia.Where(f => f.IdCliente == client.IdCliente).Max(f => f.IdFrequencia)
select new { Nome = client.Nome, Descricao = freq.Descricao };
db.Frequencia.Maxf=>f.IdCliente==client.IdCliente不能工作,是吗?这如何知道两个Frequencia对象应通过IdFrequencia属性进行比较?我想您需要db.Frequencia.Wheref=>f.IdCliente==client.IdCliente.Maxf=>f.IdFrequenciain&&freq.IdFrequencia==db.Frequencia.Maxf=>f.IdCliente==client.IdCliente我有一个错误消息运算符==不能应用于long和bool类型的opperands=/对不起….:很好!感谢var query=来自db中的客户端。客户端在db中加入freq。客户端上的Frequencia。IDCLIENT等于freq.IDCLIENT,其中freq.Tipo==true和freq.DATAHRA.Value.Date==DateTime.Today.Date和freq.IdFrequencia==db.Frequencia.Wheref=>f.IdCliente==client.IdCliente.Maxf=>f.IdFrequencia选择新的{Nome=client.Nome,descripcao=freq.descripcao};