2015-07-10 72 views
0

我是LINQ的新手,对我很陌生。我有一个简单的类来镜像SQLite表。使用LINQ获取最新的日期时间列

class SyncAudit 
{ 
    public string Server { get; set; } 
    public string Database { get; set; } 
    public string SyncTime { get; set; } 
    public int Successful { get; set; } 
} 

我想构建一个返回最近同步时间的LINQ方法。

public string getLastSyncTime() 
    { 
     using (var db = new SQLite.SQLiteConnection(this.DBPath)) 
     { 
      var query = db.Table<SyncAudit>() 
       .OrderByDescending(c => c.SyncTime) 
       .Select(c => c.SyncTime) 
       .FirstOrDefault(); 
      return query.ToString(); 
     } 
    } 

我试图找到最近期SQLite数据库同步时间并返回一个字符串。

我在做什么错?

编辑:我收到以下错误:

An exception of type 'System.MissingMethodException' occurred in mscorlib.dll but was not handled in user code 

Additional information: No parameterless constructor defined for this object. 

使用:https://components.xamarin.com/view/sqlite-net

+1

这看起来不错,有什么问题?数据库中的'SyncTime'确实是一个'string',还是应该是'DateTime'? – DLeh

+0

您不会看到显示代码的'MissingMethodException'。 –

+0

这是我得到的错误。但是,将模型更改为DateTime可以修复它。 –

回答

4

SyncTime是模型中的字符串,但似乎是(或者应该是)一个DateTime。所以在数据库中解决这个问题。如果这是不可能的,你必须解析它:

DateTime lastSyncTime = db.Table<SyncAudit>().AsEnumerable() // Do the rest of the processing in memory 
    .Select(c => DateTime.Parse(c.SyncTime)) 
    .OrderByDescending(dt => dt) 
    .FirstOrDefault(); 
return lastSyncTime;