前言

在使用 Linq to Entity 的時候,會把之前 Linq to SQL 的想法就帶進去,寫好之後編譯也都不會出錯,但是實際上在跑的時候就會出現錯誤訊息了,這點真的要注意了。這次我遇到問題的時候就是時間相減的時候發生 的,希望本篇對於遇到問題的朋友有點幫助囉!

說明

先看看測試資料表的結構

接下來建立一個 Entity ,這部份就不多加解釋怎麼建 Entity 了。

現在我想查出結束時間和起始時間差距一天以上的資料,很自然的寫出下面的程式碼:

C#
var data = db.Test.Where(X => (X.endtime - X.starttime).Days > 1).ToList();
1
var data=db.Test.Where(X=>(X.endtime-X.starttime).Days>1).ToList();

一直到編譯程式都沒有出錯,一直到執行就出現這樣的錯誤啦!

但是這一段程式碼在 Linq to SQL 卻是可以正常執行並查出資料的。因為 Entity Framework 在轉換 Linq 成 SQL 的時候會比較嚴謹,所以用這樣的寫法就會有點問題囉!

那該怎麼解決呢?這時候就需要用到 EntityFunctions 來解決這樣的問題了。

var data=db.Test.Where(X=>EntityFunctions.DiffDays(X.endtime,X.starttime)>1).ToList();

結論

EntityFunctions 類別還包含許多可以用的方法,可以幫助我們在 Linq to Entity 中正確的轉換 Linq 成 SQL 語法,而且有大部分都是和時間操作有相關的,如果有遇到一樣問題的網友可以參考看看囉!

原文地址:http://www.cnblogs.com/chengxiaohui/articles/3368354.html

Linq to Entity 时间差作为筛选条件产生的问题的更多相关文章

  1. Linq to Entity 动态拼接查询条件(重点是OR)

    public static class PredicateExtensions { /// <summary> /// 机关函数应用True时:单个AND有效,多个AND有效:单个OR无效 ...

  2. C# Linq to Entity 多条件 OR查询

    技术背景:框架MVC,linq to Entity 需要一定的lambda书写能力 问题:在简单的orm中完成一些简单的增删查改是通过where insert delete update 完成的,但是 ...

  3. Linq to Entity 多条件 OR查询

    技术背景:框架MVC,linq to Entity 需要一定的lambda书写能力 问题:在简单的orm中完成一些简单的增删查改是通过where insert delete update 完成的,但是 ...

  4. C# linq根据自定义筛选条件和所对应的数值进行筛选

    在软件应用中有时候会出现这样的界面:上面是利用多选框和下拉框组合的筛选条件.下面表格展示筛选后的数据.如下图 上面是筛选条件,表格是根据筛选条件筛选的结果. 如果表格不支持筛选功能.可以利用Linq对 ...

  5. Linq to Entity经验:表达式转换

    http://www.cnblogs.com/ASPNET2008/archive/2012/10/27/2742434.html 最近一年的项目,我主要负责一些小型项目(就是指企业内部的小项目),在 ...

  6. EF架构~linq to entity的随机排序问题

    回到目录 对于从linq to sql迁移过来的开发者,对随机排序不会感到陌生,直接为datacontext添加一个方法再配合反射就可以实现随机排序了,代码如下: /// <summary> ...

  7. EF架构~在Linq to Entity中使用日期函數

    回到目录 眾所周知,在linq to entity的查询语句中,不允许出现ef不能识别的关键字,如Trim,Substring,TotalDays等.net里的关键字,在EF查询里都是不被支持的,它的 ...

  8. Linq→join中指定多个条件

    还是习惯先撸一段SQL * FROM User_Pic P AND P.Guid = R.UserPicGuid ORDER BY PicSize DESC 然后发现Linq中的join不能多条件.. ...

  9. Linq to Entity中连接两个数据库时要注意的问题

    Linq to Entity中连接两个数据库时要注意的问题 今天大学同学问了我一个问题,Linq to Entity中连接两个数据库时,报错“指定的 LINQ 表达式包含对与不同上下文关联的查询的引用 ...

随机推荐

  1. Unity 改变游戏对象的Scale引起的不好结果

    1. 当一个游戏对象的中心(它的x,y,z的交点)  不在它的正中间时,改变它的Scale时它的中心也会变的. 如图:这是用PlayMkaer做的,胶囊体碰到瓶子瓶子会碎,会在瓶子的中心位置那生成一个 ...

  2. PlayMaker Play Sound 和 Audio Play

    这两个 Action 都可以播放声音 *Play Sound:只要把声音拖进去就可以: *Audio Play:要求游戏对象要有Audio Source组件.

  3. git使用笔记-基础篇

    git使用手册:https://git-scm.com/book/zh/v1/ 一.分支 1.查看所有本地分支 git branch 2.查看所有本地分支和远程分支 git branch -a 3.查 ...

  4. SQL命令行操作

    命令行操作(mysql.exe)    0.登录  :       mysql -u root -p    1.显示数据库列表:    show databases;     2.选择数据库:     ...

  5. GDI+图形图像处理技术——GDIPlus绘图基础

    GDI+概述 GDI在windows中定义为Graphis Device interface,及图形设备接口,是Windows API(application Programming Interfac ...

  6. 【第一篇笔记】C# 全局容错,全局异常

    网上找到两个方式,一个简单的只是做个记录,另一个能像QQ一样提交到后台. 方法一: static class Program { /// <summary> /// 应用程序的主入口点. ...

  7. 显示器分辨率不同,部分winform控件在其他机器上显示不全

    在开发机器上效果如下: 而到其他电脑上效果如下: 解决办法: 将窗体的AutoScaleMode属性设置为None,尝试一下,应该可以了. 关于AutoScaleMode的属性,可以参考 http:/ ...

  8. better-scroll 遇到的问题 1

    备注:better-scroll 实现下拉,是父子层的结构,父层的第一个子元素,如果超出父容器,那么就可以实现下拉 问题:  今天在使用better-scroll实现下拉功能,遇到了一个问题 &quo ...

  9. Vue.js双向数据绑定模板渲染

    准备知识 1. 前端开发基础 html.css.js2. 前端模块化基础3. 对ES6有初步的了解 vuejs官网:cn.vuejs.org HTML: <!DOCTYPE html> & ...

  10. 炫酷的Html+css (一)

    博客园在别的 博主看到一个样式, 里面有一段这样的 正方体旋转的 动态图 吸引了我. 找博主要了代码, 贴出来 与大家共享. 鼠标放上去会展开 一大一小两个正方体, 鼠标悬浮上去, 外面的正方体会展开 ...