2011-01-24 8 views
1

で使用するためのLINQのツーSQLの日付のSQL文を翻訳:私は、次のSQLコマンドを持ってEF4

SELECT  CONVERT(varchar, Logged, 103) AS Visited, COUNT(ID) AS Totals 
FROM   tblStats 
GROUP BY CONVERT(varchar, Logged, 103) 
ORDER BY Visited DESC 

を私はEntity Frameworkを一緒に使用することができL2S声明にこれを翻訳したいです、 datetime型の操作では、問題をどのように攻撃しようとしているかによってさまざまなエラーが発生します。

アプローチ:

var results = from s in db.Stats 
     group s by (s.Logged.Date.ToString()) into Grp 
     select new { Day = Grp.Key, Total = Grp.Count() }; 

エラー:

LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression.

アプローチ:

var results = from s in db.Stats 
       group s by (s.Logged.Date) into Grp 
       select new { Day = Grp.Key, Total = Grp.Count() }; 

エラー:

The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

クエリを動作させるためにはどのような構文が必要ですか?

答えて

1

EntityFunctions.TruncateTimeメソッドを使用してみてください:

var results = from s in db.Stats 
       group s by EntityFunctions.TruncateTime(s.Logged) into Grp 
       select new { Day = Grp.Key, Total = Grp.Count() }; 
+0

これは問題です。ありがとう。今私は別の問題を抱えていますが、私はそれについて新しい質問を設定します。 –

0

あなたはs.Logged.DateDateセクションは必要ですか?

は、あなたはこれを試してみました:

var results = from s in db.Stats 
       group s by (s.Logged) into Grp 
       select new { Day = Grp.Key, Total = Grp.Count() }; 

を私はLoggedプロパティ(テーブルの列)であると仮定しています。

編集:皆さんは早急に対応しています。

+0

'Date'パーツを使用しない場合は、時間コンポーネントを含む完全な日時でグループ化します。 –

関連する問題