如何使用linq在列表对象中选择其中最大StartDate所在的一行

时间:2019-09-06 18:03:35

标签: linq

如何选择列表对象中最大StartDate的行json 使用linq tolist

 {"itmes":[
         {"StartDate":"20190901185703","Name":"A1","Id":"1","EndDate":"20190930235959"}
        ,{"StartDate":"20190903181510","Name":"A2","Id":"2","EndDate":"20190909235959"}
        ,{"StartDate":"20190906005152","Name":"A3","Id":"3","EndDate":"20191006235959"}
        ,{"StartDate":"20190714181313","Name":"A4","Id":"4","EndDate":"20991231235959"}
      ],"Code":"0","text":"success"}

     public class Query
    {
        public class itmes
        {
            public string StartDate { get; set; }
            public string Name { get; set; }
            public string Id { get; set; }
            public string EndDate { get; set; }
        }

        public class RootObject
        {
            public List<itmes> itmes { get; set; }
            public string Code { get; set; }
            public string text { get; set; }
        }

    }

     var result = JsonConvert.DeserializeObject<List<Query.RootObject>>(json);

预期的输出此行列出

    {"StartDate":"20190906005152","Name":"A3","Id":"3","EndDate":"20191006235959"}

1 个答案:

答案 0 :(得分:1)

首先,您不能强制转换并反对集合,因此它应该是Query.RootObject而不是List<Query.RootObject>;其次,我不确定为什么要在一个类中创建类,而无需查询类就可以独立地进行

您的课程将是

       public class itmes
        {
            public string StartDate { get; set; }
            public string Name { get; set; }
            public string Id { get; set; }
            public string EndDate { get; set; }
        }

        public class RootObject
        {
            public List<itmes> itmes { get; set; }
            public string Code { get; set; }
            public string text { get; set; }
        }
        var json = "{\"itmes\":[         {\"StartDate\":\"20190901185703\",\"Name\":\"A1\",\"Id\":\"1\",\"EndDate\":\"20190930235959\"}        ,{\"StartDate\":\"20190903181510\",\"Name\":\"A2\",\"Id\":\"2\",\"EndDate\":\"20190909235959\"}        ,{\"StartDate\":\"20190906005152\",\"Name\":\"A3\",\"Id\":\"3\",\"EndDate\":\"20191006235959\"}        ,{\"StartDate\":\"20190714181313\",\"Name\":\"A4\",\"Id\":\"4\",\"EndDate\":\"20991231235959\"}      ],\"Code\":\"0\",\"text\":\"success\"}";
        var result = JsonConvert.DeserializeObject<RootObject>(json);
        var row = result.itmes.Where(p=> p.StartDate == result.itmes.Max(q => q.StartDate)).ToList();