2017-03-20 11 views
0

モデルに複数のレコードを取得すると、10個の最新レコードが降順で必要になります.iテーブルに10レコードしか表示しないでください。 linqクエリので、私は10レコードを取得することができますforeachループでも、それは10回以上バインドすべきではありません。あなただけのTakeメソッドを使用することができCのモデルに最新のレコードを10個だけバインドする方法

コード

public ActionResult AssetTrack() 
      { 
     model.AddRange(getAssetDetails("0000acfffe588041")); 
     model= model.OrderByDescending(t => t.time).Take(10).ToList(); 
     return View(model); 
      } 

    WebRequest req = WebRequest.Create(@"https://example.com"); 
        req.Method = "GET"; 
        req.Headers["Authorization"] = "Basic " + "[email protected]=="; 
        HttpWebResponse resp = req.GetResponse() as HttpWebResponse; 
        var encoding = resp.CharacterSet == "" ? Encoding.UTF8 : Encoding.GetEncoding(resp.CharacterSet); 
        using (var stream = resp.GetResponseStream()) 
        { 
         var reader = new StreamReader(stream, encoding); 
         var responseString = reader.ReadToEnd(); 
         List<AssetDetail> Pirs = Newtonsoft.Json.JsonConvert.DeserializeObject<List<AssetDetail>>(responseString); 

         foreach (var item in Pirs) 
         { 
          byte[] data = Convert.FromBase64String(item.dataFrame.ToString()); 
          AssetTrackerViewModel assetModel = new AssetTrackerViewModel(); 
          assetModel.deviceid = deviceID; 
          assetModel.longitude = Convert.ToString(Encoding.UTF8.GetString(data).Substring(4)); 
          assetModel.latitude = Convert.ToString(Encoding.UTF8.GetString(data).Substring(4)); 
          assetModel.time = TimeZoneInfo.ConvertTimeFromUtc(item.timestamp, TimeZoneInfo.FindSystemTimeZoneById("India Standard Time")).ToString(); 
          model.Add(assetModel); 
         } 
        } 
+0

'Pirs.OrderBy(X => x.time).Take(10).ToList();' –

答えて

1

使用LINQ、

var result = Pirs.OrderByDescending(t => t.time).Take(10).ToList(); 
+0

はうまく動作しますが、AssetTrack()でここに書き込むか、getAssetDetails()で書き込む必要があります。リストコレクション? – Swapna

2

model = model.OrderByDescending(x => DateTime.Parse(x.time)) 
      .Take(10) 
      .ToList(); 

var Pirs = Newtonsoft.Json.JsonConvert 
          .DeserializeObject<List<AssetDetail>>(responseString) 
          .OrderBy(assetDetail=>assetDetail.time) 
          .Take(10); 

あなたがこの方法について読みたい場合は、見hereを持ってしてください:あなたはこれを適用したいところ私は2つのスニペットを提供下にあなたが質問から以来

は、あまり明確ではありません。

+0

1より効率的なコードのパフォーマンスが賢明?一番上のスニペットやボトムを変更する方が良いですか? – Swapna

関連する問題