连接表多个条件 - 比较日期 - Linq

发布于 2024-08-18 16:17:14 字数 549 浏览 7 评论 0原文

我试图根据多个条件对两个表进行联接,问题是我无法比较日期字段。日期以日期时间格式存储在数据库中,我想要特定日期的所有记录,当我按照下面的代码所示执行此操作时,我收到此异常..方法“System.String ToShortDateString()”不支持翻译成SQL。

PS这是一个大查询的一部分..

    string dt = "10/14/2009";    


 using (ReportGeneratorDataContext db = new ReportGeneratorDataContext())
        {
            var r = from f in db.f
                    join a in db.a
                    on new { x = f.ID, y = f.date.ToShortDateString() } equals new { x = a.ID, y = dt }
                    select f.Name;
        }

有什么解决方法吗?

I'm trying to do a join on two tables based on multiple conditions, the problem is I'm not able to compare the date fields. The date is stored in datetime format in DB and I want all the records on a particular date, when I do this in as shown in the code below, I get this exception .. Method 'System.String ToShortDateString()' has no supported translation to SQL.

P.S this is part of a big query..

    string dt = "10/14/2009";    


 using (ReportGeneratorDataContext db = new ReportGeneratorDataContext())
        {
            var r = from f in db.f
                    join a in db.a
                    on new { x = f.ID, y = f.date.ToShortDateString() } equals new { x = a.ID, y = dt }
                    select f.Name;
        }

Any workarounds?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

乜一 2024-08-25 16:17:14

我会尝试

  • 使用自己的 Linq to SQL 映射在数据库中定义一个视图,
  • 定义表 a 的计算列(在表中或在视图中),其中包含转换为日期的字符串(在数据库端...)
  • 在数据库外部进行联接(即获得完整的交叉联接并在此枚举上执行where

我知道,这些选项都不是真正令人满意的,但是我想这是 Linq-To-Sql 的一个缺点......

I would try to

  • either define a view in the DB with its own Linq to SQL mapping
  • define a calculated column (either in the table or in a view) of Table a which contains the string converted to a date (on DB side ...)
  • do the join outside the database (i.e. get the complete cross join and do a where on this enumeration)

I am aware, that none of these options is really satisfying, but I suppose that's a shorcoming of Linq-To-Sql...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文