2011-12-11 7 views
2

私は選択構築し、実体objectSetとクラスに対する条件が
のObjectQueryを使用しました。エンティティSQL DateDiff関数

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()); 
       } 

私は私のcontition、 はどのように私はそれを行うことができますでDATEDIFF関数を使用したいですか?

+0

私はわからないけど、(LINQの中で可能)エンティティフレームワークでは不可能である。

これを試してみてください。しかし、質問には、Linq.Dynamicクラスも使用していますか? –

答えて

2

これを試してみてください:

var query = context.TestEnt 
        .Where("DiffDays(it.RunDateTime,'22-11-2012')=0"); 
        .Select("it.BuySell, it.DepoTerm") 

あなたの文字列にCreateDataTimeを呼び出す必要がありそれを動作させるためにデータを渡される可能性があります。 Hereは、ESQLでサポートされているすべての日付関数のリストです。 ESQL機能DiffDaysが作業を行い

var query = context.TestEnt 
        .Where(x => SqlFunctions.DateDiff("day", x.RunDateTime,'22-11-2012') == 0) 
        .Select(x => new { x.BuySell, x.DepoTerm }); 
+0

残念ながら "DiffDays(it.RunDateTime、'22 -11-2012 ')= 0")が機能しません –

0

が、それは右のそれを得るために手間のかかるです:

また、LINQのツーエンティティを使用することができます。文字列を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()); 
} 
関連する問題