0

私のデータベースには、たとえば、メテオ放送の膨大なコレクションがあります。

たとえば、特定の都市からすべての気象放送を取得したいのですが、それらすべてではなく、気象放送の最新のエントリのみを返します。そのため、市内のすべての町/地区から放送されたメテオのリストを取得します。

だから私はこの方法を持っているとしましょう:

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;}
}

気象データベースには同じ日に同じ都市から多くのエントリが含まれている可能性があるため、これは不完全です。常に最新のものを取得したいと考えています。同様に、何人かの怠け者のために、数日間エントリを「取得しない」場合があります (おわかりのとおりです)。

データベースをチェックして、そのような気象ブロードキャストの最新のエントリのみを取得して保持していることを確認するにはどうすればよいですか?

4

2 に答える 2

3

私はあなたの質問を理解しているかどうか完全にはわかりません。このクエリは、次の最新のレコードを返しますREGIONID

var meteoQry = (from meteo in db.METEO
                   where meteo.REGION.REGIONID == _id
                   orderby meteo.DATEMETEOBROADCAST descending
                   select meteo).First();

Jason がコメントに投稿したリンクでは、次の点に注意してください。

source に要素が含まれていない場合、First(IEnumerable) メソッドは例外をスローします。ソース シーケンスが空の場合に既定値を返すには、FirstOrDefault メソッドを使用します。

編集:

Herve のコメントによると、上記のコードは List<> ではなく 1 つのオブジェクトを返します。代わりに (項目が 1 つだけの) リストを使用したい場合は、以下を試してください。

var meteoQry = (from meteo in db.METEO
                   where meteo.REGION.REGIONID == _id
                   orderby meteo.DATEMETEOBROADCAST descending
                   select meteo).Take(1);
于 2013-04-22T20:23:31.957 に答える