2017-10-25 11 views
1

私はdbを持っています。ここで特定のデータを持つ前の要素を取得する(ASP.NET MVC)

はここで画面

enter image description here

はデシベルのモデルです。

public partial class Logging 
{ 
    public string Imei { get; set; } 
    public DateTime CurDateTime { get; set; } 
    public Nullable<System.DateTime> GPSDateTime2 { get; set; } 
    public Nullable<decimal> Latitude2 { get; set; } 
    public Nullable<decimal> Longitude2 { get; set; } 
    public int Speed { get; set; } 
    public Nullable<int> Datatype { get; set; } 
    public int Id { get; set; } 
} 

は、私は、バックエンドのdatatype == 2

は、私はテーブルからすべてのデータを取得するには、このコードを作るエントリdatatype == 1と前の要素間の分の違いを見つける必要があり

using (var ctx = new GoogleMapTutorialEntities()) 
{ 
    var allitems = ctx.Loggings.AsEnumerable().Select(
      x => new Logging 
      { 
       Longitude2 = x.Longitude2, 
       Latitude2 = x.Latitude2, 
       CurDateTime = x.CurDateTime, 
       Datatype = x.Datatype 

      }).ToList(); 
} 

どのように違いを計算できますか?

答えて

1

DateTimeTicksプロパティを使用し、TimeSpanに渡して、時差を数分で取得する必要があります(TotalMinutes)。たとえば、次のように

for(int i = 1; i < yourQuery.Count; i++){ 
    var differenceTicks = yourQuery[i].CurDateTime.Ticks - yourQuery[i-1].CurDateTime.Ticks; 
    var differenceInMinutes = new TimeSpan(differenceTicks).TotalMinutes; 
    // You can assign this value to any property within your list or 
    // to another list 
} 

アップデート:DataTypeプロパティでクエリをフィルタリングするには

、あなたが.Where(...)メソッドを呼び出す必要があり、あなたがこのようにそれを使用することができます。

var filteredQuery = query.Where(x=> x.DataType == 1 || x.DataType == 2); 

がアップデート2:

あなたのコメントに記述した問題はより複雑で、この問題を解決するには、レコードID /行識別子i実際のテーブル。あなたは正確に何が必要に応じて調整するために、ループ内の条件を必要とするかもしれない

var filteredQuery = query.Where(x=> x.DataType == 1 || x.DataType == 2).OrderByDescending(x=> x.id); 
for(int i = 1; i < filteredQuery.Count; i++){ 
    if(filteredQuery[i].DataType == 2 && filteredQuery[i-1].DataType == 1){ 
     // Then calculate the difference as described 
    } 
} 

次のようにそのIDと仮定すると、単にあなたのモデルでid財産である、それを行うことができます。

あなたはDateType == 2が ない がデータベースにすでに削除されている可能性がある間にデータとしてDataType == 1に対応することができるで結果を得ることを覚えておいてください。この問題に取り組むには、current id is equal to previous id + 1かどうかを確認するだけです。これは、idがGUID型(逐次GUIDでなくても)で、もちろんアルファベット形式でないか、ランダム関数によって生成された場合にのみ機能します。

+0

hm。私の質問は、主にデータ型== 1とデータ型== 2のエントリのCurDateTimeを取得する方法です。 –

+0

あなたはこのエントリの間でわかるように、データ型== 0のエントリを持つことができます –

+0

@ S.E:更新された答えを確認してください。 – Transcendent

関連する問題