2017-03-26 16 views
1

我想獲得10條應該是唯一且不應該爲空(ACnrAAAAAAAAAAA =)值的最新記錄(orderbydescenting datetime)。如何使用linq查詢獲取最新的不含空值的10條記錄

樣本數據

AGMDAQo1/wSsCPU= 
AGjtAAAAAAAAAAA=(this should be discarded as treating null values) 
AGMDAQo1/wSsCPU= 
ACnrAAAAAAAAAAA=(this should be discarded as treating null values) 
AWa2AQo2CQSsCNE= 

JSON數據

[{"timestamp":"2017-03-20T05:27:01.688Z","dataFrame":"ACnrAAAAAAAAAAA=","fcnt":165,"port":3,"rssi":-85,"snr":7,"sf_used":12,"id":1489987621688,"decrypted":true},{"timestamp":"2017-03-20T05:27:41.675Z","dataFrame":"ACntAAAAAAAAAAA=","fcnt":169,"port":3,"rssi":-85,"snr":9,"sf_used":12,"id":1489987661675,"decrypted":true}] 

期望運算

AGMDAQo1/wSsCPU= 
AWa2AQo2CQSsCNE= 

代碼

using (var stream = resp.GetResponseStream()) 
        { 
         var reader = new StreamReader(stream, encoding); 
         var responseString = reader.ReadToEnd(); 
         var Pirs = Newtonsoft.Json.JsonConvert.DeserializeObject<List<AssetDetail>>(responseString).OrderByDescending(AssetDetail=>AssetDetail.timestamp).Take(10); 
         foreach (var item in Pirs) 
         { 
         } 

回答

1

爲什麼不提供Where子句?你沒有提到你打印正是在你的例子安慰,但應該是這樣的:

var items = Newtonsoft.Json.JsonConvert.DeserializeObject<List<AssetDetail>>(responseString);  
var eligibleItems = items.Where(a => !a.dataFrame.EndsWith("AAAAAAAAAAA=")) 
         .GroupBy(a => a.dataFrame) 
         .Select(g=> g.First()) 
         .OrderByDescending(a => a.timestamp) 
         .Take(10); 
+0

我認爲這將去除其中類似的數據「AGjtAAAAAAAAAAA =」而已,但我需要刪除的記錄,這有「AAAAAAAAAAA =」以及獨特的價值。 –

+0

以那個值結尾?更新 – BrokenGlass

+0

我將如何獲得distict數據幀值。我需要10個獨特的數據幀。 –

相關問題