C# 选择具有最大值的图元
首先,我有一个名为C# 选择具有最大值的图元,c#,.net,entity-framework,linq,C#,.net,Entity Framework,Linq,首先,我有一个名为estadospordispitivos的SQL表,其中包含以下列: EstadoPorDispositivosID (PK, Int, Auto_Increment) DispositivoID, EstadoDispositivo, DateTimeInicio DateTimeFinal. 我想要的是从数据库中检索一个实体,该实体具有特定的ID,并且具有最大的EstadoPorDispositivosID 我在这一点上: using (var db = new C
estadospordispitivos
的SQL表,其中包含以下列:
EstadoPorDispositivosID (PK, Int, Auto_Increment)
DispositivoID,
EstadoDispositivo,
DateTimeInicio
DateTimeFinal.
我想要的是从数据库中检索一个实体,该实体具有特定的ID
,并且具有最大的EstadoPorDispositivosID
我在这一点上:
using (var db = new ContextoDB())
{
var estado = db.EstadosPorDispositivos
.Where<EstadosPorDispositivo>(e => e.DipositivoID == this.DispositivoID && ...)
(...)
}
使用(var db=new ContextoDB())
{
var estado=db.EstadosPorDispositivos
.其中(e=>e.DipositivoID==this.DispositivoID&&…)
(...)
}
只需按该属性排序,然后取第一个。
别忘了让数据库调用异步;)
使用:
或者不使用Max
的另一种方式:
var estado = db.EstadosPorDispositivos.Where(e => e.DipositivoID == this.DispositivoID && ...)
.OrderByDescending(t => t.EstadoPorDispositivosID)
.FirstOrDefault()?.EstadoPorDispositivosID;
“别忘了让你的数据库调用异步”-如果你的代码库已经是同步的,那就不那么容易了。那么,为了获得最大值,你对所有元素都进行了排序?如果您想在乐队和作曲家列表中找到
ZZ top
,订购Bach
和Beethoven
似乎是一种浪费,生成的SQL查询将是一个SELECT top(1)
,并且您的数据库足够智能,可以计算出只需要返回最大n(本例中为1)行。谢谢!这个在FirstOrDefault()之后,它的作用是什么?@AgustinMeinardo在执行成员访问之前,?
将测试左侧操作数的值是否为null。它被称为空条件运算符
var estado = db.EstadosPorDispositivos.Where(e => e.DipositivoID == this.DispositivoID && ...)
.Max(c => c.EstadoPorDispositivosID)
var estado = db.EstadosPorDispositivos.Where(e => e.DipositivoID == this.DispositivoID && ...)
.OrderByDescending(t => t.EstadoPorDispositivosID)
.FirstOrDefault()?.EstadoPorDispositivosID;