我使用的是由Scott Guthrie的动态LINQ库连同实体框架和C#。
我要建立我在那里字符串分解成几个因素的变量,然后将字符串变量传递给where子句。 出于某种原因,这将工作:
ContactList = ContactList.Where("DateAdded >= @0", DateTime.Parse("12/1/2012"));
但是,这是行不通的
string WhereClause = string.Format("DateAdded >= {0}", DateTime.Parse("12/1/2012"));
ContactList = ContactList.Where(WhereClause);
如前所述,我需要传递变量的版本来使用它。 任何人都知道为什么第二次不起作用?
提前致谢!
我能得到它与一个稍微不同的字符串格式使用的信息工作在这里 。
这样做的工作对我罚款:
ContactList.Where("DateAdded >= DateTime(2013, 06, 18)")
注意这并不在所有的工作DateTimeOffset
列。
看来我试图做是不可能与当前DynamicLINQ库。 它不工作的原因,是深受提拉克概述如下。
我的解决办法是修改DynamicLINQ库,允许查询被写成一个字符串,并传递给那里的日期/时间数据类型子句。 修改发现这里由保罗·海切尔: LINQ to SQL中,与DATE类型字段动态查询
ObjectQuery.Where过载接受2个参数。
-
string predicate
-
params ObjectParameter[] parameters
在你的第一个例子, Where
建立使用查询(WHERE子句) ObjectParameter
(使用名称,类型和价值参数ObjectParameter
)
在第二个例子中,无论是通过在where子句(没有内部转换基础上进行传递的参数的数据类型)作为最终的处理。
基于理查德溃败的选项,有轻微的修改:
ContactList.Where("DateAdded >= DateTime(2013, 06, 18)")
这部作品在我的Linq2Entities解决方案。 请注意, DateTime
,而不是Date
。 希望这样可以节省别人这个问题让我头疼。
ContactList.Where
可能放在引号内,非数字的参数(如日期时间)。 在你的第二个字符串中的日期不报价。