动态LINQ日期时间比较字符串构建 - Linq To实体

Ric*_*tts 6 c# linq string entity-framework dynamic-linq

我正在使用Scott Guthrie的动态LINQ库以及Entity Framework和C#.

我必须根据几个因素将where字符串构建到变量中,然后将字符串变量传递给where子句.出于某种原因,这将有效:

ContactList = ContactList.Where("DateAdded >= @0", DateTime.Parse("12/1/2012"));
Run Code Online (Sandbox Code Playgroud)

但这不起作用

string WhereClause = string.Format("DateAdded >= {0}", DateTime.Parse("12/1/2012"));
ContactList = ContactList.Where(WhereClause);
Run Code Online (Sandbox Code Playgroud)

如前所述,我需要在传递变量的版本中使用它.谁知道为什么第二个不起作用?

提前致谢!

Ric*_*out 13

我能够使用这里的信息使用稍微不同的字符串格式.

这样做对我来说很好:

ContactList.Where("DateAdded >= DateTime(2013, 06, 18)")
Run Code Online (Sandbox Code Playgroud)

请注意,这对DateTimeOffset列不起作用.

  • 并注意不要将列命名为 DateTime,因为它不起作用。 (2认同)

Ric*_*tts 4

看来我想要做的事情对于当前的 DynamicLINQ 库来说是不可能的。蒂拉克在下面详细概述了它不起作用的原因。

我的解决方案是修改 DynamicLINQ 库,以允许将查询写入字符串并传递给日期/时间数据类型的 where 子句。Paul Hatcher 在这里发现了修改:LINQ TO SQL, Dynamic query with DATE type fields