如何从对象集合中获取具有第二个最新日期的对象
How do I get the object with the second latest date from a collection of objects
我有一个对象列表,每个对象都有一个类型为 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",
}
]
在这个例子中,我想 return 编号为 X66-M1-20/1
的对象
我试图遵循这个Linq: How to get second last
但它在我的情况下不起作用,因为它是一个对象列表。
试试这个
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
class
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
我有一个对象列表,每个对象都有一个类型为 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",
}
]
在这个例子中,我想 return 编号为 X66-M1-20/1
的对象我试图遵循这个Linq: How to get second last
但它在我的情况下不起作用,因为它是一个对象列表。
试试这个
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
class
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