我有一個物件串列,每個物件都有一個 DateTime 型別的 AcceptanceDate 屬性。
我想檢索串列中第二個最新日期的物件。
有沒有辦法做到這一點?
[
{
"number": "X76-M1-20/2",
"AcceptanceDate": "2020-07-30T00:00:00Z",
"type": "Done",
},
{
"number": "X75-M1-18/2",
"AcceptanceDate": "2018-03-04T00:00:00Z",
"type": "Done",
},
{
"number": "X66-M1-20/1",
"AcceptanceDate": "2020-02-12T00:00:00Z",
"type": "Done",
},
{
"number": "X77-M1-17/1",
"AcceptanceDate": "2017-02-14T00:00:00Z",
"type": "Done",
}
]
在這個例子中,我想回傳帶有編號的物件:X66-M1-20/1
我試圖遵循這個Linq:如何獲得倒數第二
但它在我的情況下不起作用,因為它是一個物件串列。
uj5u.com熱心網友回復:
嘗試這個
var jd = JsonConvert.DeserializeObject<List<Data>>(json);
var item =jd.OrderBy(j =>j.AcceptanceDate ).TakeLast(2).FirstOrDefault();
輸出
Number X66-M1-20/1
AcceptanceDate 2020-02-12
Type Done
班級
public class Data
{
public string Number { get; set; }
public DateTime AcceptanceDate { get; set; }
public string Type { get; set; }
}
更新
由于 PO 需要 2 個最后的物件,因此我可以推薦此代碼
var jd = JsonConvert.DeserializeObject<List<Data>>(json);
var items =jd.Where(i=> i.Type=="Done").OrderBy(j =>j.AcceptanceDate).TakeLast(2).ToList();
if (items!= null && items.Count >=2)
{
var secondLastItem=items[0];
var lastItem=items[1];
}
輸出
X66-M1-20/1 2020-02-12 Done //secondLastItem
X76-M1-20/2 2020-07-30 Done //lastItem
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/318198.html
下一篇:C#linqjoin回傳多個結果
