【问题标题】:Get Last entry with specific data in table(ASP.NET MVC)获取表中特定数据的最后一个条目(ASP.NET MVC)
【发布时间】:2018-04-04 21:20:07
【问题描述】:

我有一些列的表。这是表类

 public string Imei { get; set; }
    public DateTime CurDateTime { get; set; }
    public Nullable<System.DateTime> GPSDateTime2 { get; set; }
    public Nullable<decimal> Latitude2 { get; set; }
    public Nullable<decimal> Longitude2 { get; set; }
    public string Speed { get; set; }
    public Nullable<int> Datatype { get; set; }
    public int Id { get; set; }

我需要在 Datatype = 2 的表中找到最后一条记录,并找到差异 23:59 - CurDateTime。

为了区别我写了属性

这里是代码

 [NotMapped]
    public TimeSpan? LastStartDifference
    {
        get
        {
            if (CurDateTime != null)
            {
                var midnight = new DateTime(CurDateTime.Year, CurDateTime.Month, CurDateTime.Day, 23, 59, 00);
                var difference = midnight - CurDateTime;
                return difference;
            }
            return null;
        }
    }

对于第一个元素,我编写了这样的代码

 public JsonResult GetStops()
    {
        using (var ctx = new GoogleMapTutorialEntities())
        {

           var firstitem = ctx.Loggings.Where(x => x.Datatype == 1).AsEnumerable().Select(
                x => new
                {
                    lng = x.Longitude2,
                    lat = x.Latitude2,
                    difference = (int)(x.FirstStartDifference?.TotalMinutes ?? -1) * x.coeff

                }).FirstOrDefault();

            return Json(firstitem, JsonRequestBehavior.AllowGet);
        }
    }

但是我怎样才能找到Datatype == 2 的最后一个元素呢?

【问题讨论】:

    标签: c# mysql asp.net asp.net-mvc entity-framework


    【解决方案1】:

    我刚刚从员工工资表中获得了净工资的最后一个增量:

    var netsalary = UowObj.EmployeeSalaryRepository.GetAllData().Where(x => x.EmployeeID == data.ID && x.IsArchive==true).Select(x => x.NetSalary).LastOrDefault();
    

    【讨论】:

      【解决方案2】:

      你可以使用这个: 使用 LastOrDefault 并选择 Datatype == 2 的项目

      public JsonResult GetStops()
      {
         using (var ctx = new GoogleMapTutorialEntities())
         {
            var lastItem = ctx.Loggings.LastOrDefault(x => x.Datatype == 2).AsEnumerable().Select(
            x => new
            {
               lng = x.Longitude2,
               lat = x.Latitude2,
               difference = (int)(x.LastStartDifference?.TotalMinutes ?? -1) * x.coeff
      
            });
      
            return Json(lastItem, JsonRequestBehavior.AllowGet);
        }
      }
      

      【讨论】:

      • 嗯。我不知道LastOrDefault。谢谢
      • 没关系,但我认为 LastOrDefault 需要写在 last }) 之后
      • @SE,你也可以像这样使用它: ctx.Loggings.Where(x => x.Datatype == 2) 并在 }) 之后这样做: }).LastOrDefault ();与您对 FirstOrDefault() 所做的完全相同
      • 还有。我需要从return Json(firstitem, JsonRequestBehavior.AllowGet); 中的最后一项和第一项返回数据。我该怎么做?
      • 返回项目列表。将第一项和最后一项添加到列表中, lits.add(firstItem); list.Add(lastItem);并这样做:返回 Json(list, JsonRequestBehavior.AllowGet);
      猜你喜欢
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      • 1970-01-01
      • 2016-11-17
      • 2016-02-04
      相关资源
      最近更新 更多