做项目的时候遇到一个要将数据库保存的日期yyyy-MM.dd hh:mm:ss.fff 转换yyyy-MM-dd hh:mm然后求和
于是直接在linq中这样写
var TotalSpace = db.DiskInfor
.Where(d => d.UpDateTime.ToString("yyyy-MM-dd hh:mm") == lastDate && d.Machine.ID == id)
.Select(d => (int?)d.TotalSpace)
.Sum() ?? 0;
Where(d => d.UpDateTime.ToString("yyyy-MM-dd hh:mm") == lastDate && d.Machine.ID == id)
然后 就悲催了
System.NotSupportedException:“LINQ to Entities does not recognize the method 'System.String ToString(System.String)' method, and this method cannot be translated into a store expression.”
找了一大堆资料五花八门说啥的都有
想了想大致linq执行的过程,好像ToList之后就不是在数据库里运行的SQL语句了于是就加了个ToList然后就成了
var TotalSpace = db.DiskInfor
.ToList()
.Where(d => d.UpDateTime.ToString("yyyy-MM-dd hh:mm") == lastDate && d.Machine.ID == id)
.Select(d => (int?)d.TotalSpace)
.Sum() ?? 0;
em~~~记录一下