如何保留数据库中项目的最新条目?
本文关键字:项目 最新 数据库 何保留 保留 | 更新日期: 2023-09-27 18:10:27
在我的数据库中,假设我有一个巨大的气象广播集合。
例如,我想获得来自特定城市的所有气象广播,但只返回最新的气象广播条目,而不是全部。这样我就能得到这个城市所有城镇/地区的气象广播列表。假设我有这个方法:
internal List<METEO> ListLatestMeteoByRegion(int _id)
{
var meteoQry = from meteo in db.METEO
where meteo.REGION.REGIONID == _id
// SORT METEO BY DATETIME???
select meteo;
List<METEO> listToReturn = new List<METEO>;
listToReturn.AddRange(meteoQry);
}
和METEO是这个模型:
public class METEO
{
public int METEOID { get; set;}
public int REGIONDID { get; set; }
public Region region { get;set; }
public int DISTRICTID { get; set; }
public District district { get; set;}
public DateTime DATEMETEOBROADCAST { get; set; }
public string METEOOUTSIDE { get; set;}
}
现在这是不完整的,因为meteo数据库可能在同一天有来自同一城市的许多条目,而我想始终获得绝对最新的条目。同样,由于一些懒惰的家伙(你知道的),它可能几天内"没有"任何条目。
我如何检查数据库以确保我只获得并保留这种气象广播的最新条目?
我不太明白你的问题。这个查询将返回REGIONID
最近的记录:
var meteoQry = (from meteo in db.METEO
where meteo.REGION.REGIONID == _id
orderby meteo.DATEMETEOBROADCAST descending
select meteo).First();
在Jason在评论中发布的链接中,请记住:
编辑:First(IEnumerable)方法抛出异常源不包含任何元素。时返回默认值如果源序列为空,则使用FirstOrDefault方法。
根据Herve的注释,上面的代码将返回一个对象而不是List<>。如果您想使用列表(只有一个项目),请尝试:
var meteoQry = (from meteo in db.METEO
where meteo.REGION.REGIONID == _id
orderby meteo.DATEMETEOBROADCAST descending
select meteo).Take(1);
如果可以的话,我建议在数据库中创建一个名为vwLatestMeteoDateMetroBroadcast
的视图,它的内容如下:
Select REGIONID, DATEMETEOBROADCAST
From meteo.REGION
Group By REGIONID
您可以将meteo.Region
与meteo.vwLatestMeteoDateMetroBroadcast
连接以获得最近的一个
(假设您从未有来自同一地区的多行具有完全相同的DATEMETEOBROADCAST
)