我使用
对实体ObjectSet类构建select and where条件ObjectQuery .
ObjectQuery<DbDataRecord> query = context.TestEnt.Select("it.BuySell, "
+ "it.DepoTerm").Where("Datediff(day,it.RunDateTime,'22-11-2012')=0" );
var a = query.ToList();
foreach (var tmp in a)
{
Console.WriteLine(tmp["BuySell"].ToString());
}
我想在我的where条件中使用datediff函数,
试试这个:
var query = context.TestEnt
.Where("DiffDays(it.RunDateTime,'22-11-2012')=0" );
.Select("it.BuySell, it.DepoTerm")
这是可能的,你将不得不调用CreateDataTime
在你的字符串传递的数据,使其工作。以下是ESQL中所有支持的日期函数列表。
你也可以使用链接到实体:
var query = context.TestEnt
.Where(x => SqlFunctions.DateDiff("day", x.RunDateTime,'22-11-2012') == 0)
.Select(x => new { x.BuySell, x.DepoTerm });
ESQL函数DiffDays
确实可以工作,但是要正确使用它是很困难的。你必须将字符串转换为DateTime
;但是,由于使用CreateQuery<>
方法将文本转换为SQL,因此需要强制转换为System.DateTime
,否则查询将在运行时失败。
试试这个:
ObjectQuery<DbDataRecord> query = context.TestEnt.Select("it.BuySell, it.DepoTerm")
.Where("DiffDays(it.[RunDateTime],cast('22-11-2012' as System.DateTime))=0");
var a = query.ToList();
foreach (var tmp in a)
{
Console.WriteLine(tmp["BuySell"].ToString());
}