2010-12-03 5 views
1

LINQ to Entity Framework 4.0。 SQLサーバー。エンティティ4.0キャスティング値をDateTimeとして

オブジェクトのリストを返そうとしていますが、データベースの列の1つがvarchar(255)で、日付が含まれています。私はdatetimeに値をキャストしようとしていますが、まだ解決策が見つかりませんでした。

例:

List<MyObject> objects = (from c in context.my_table 
           where c.field_id == 10 
           select new MyObject() 
           { 
            MyDate = c.value // This is varchar, want it to be datetime 
           }).ToList(); 

が、これは可能ではないですか?

更新。これはLINQ to Entityです。 DateTimeに変換しようとすると私が取得:

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

答えて

1

答えはEntity Frameworkでは現時点では不可能です。 LINQ自体は、Entity Frameworkではサポートされていません。

0

あなたは、日付を含む文字列を取り、そこからDateTimeオブジェクトを作成しますDateTime.Parse(c.valueを)したいです。あなたはこの 日のように行うことができます

+2

私はこのエラーを取得しますストア式に変換されます。 – GregInWI2

0

= DateTime.Parse(テキスト)

0

read、そして最善の策は、あなたの結果を使用して、その後、日付時刻に変換されます。以下のように、

static void Main(string[] args) 
    { 
     Console.WriteLine(getme()); 
     Console.ReadLine(); 
    } 
    private static DateTime getme() 
    { 
     List<string> ss = new List<string>(); 
     ss.Add("11/11/2010"); 
     var r = from l in ss 
       select new { date = Convert.ToDateTime(l) }; 



     return r.FirstOrDefault().date; 

    } 
+0

これはEntity Frameworkです。私はSQL Serverからデータを返します。このバージョン4.0。変換が動作しない、私にエラーを与える。私はエラーメッセージで質問を更新しました。 – GregInWI2

+0

日付はすべて良いですが、Entity Frameworkは決して変換をサポートしていません。 – GregInWI2

0

.ToList()を呼び出すと、これによりデータベースからすべてのデータが読み込まれ、データベース側ではなくホスト側で変換されます。この場合はOKになりますが、この変換を使用する他のケースでは、コストがかかります。ここで 変更したサンプル:

List<MyObject> objects = (from c in context.my_table 
          where c.field_id == 10).ToList(). 
          Select(c=>new MyObject() 
          { 
           MyDate = Convert.ToDateTime(c.value) 
          }).ToList(); 

ブログ:メソッド「のSystem.DateTimeパース(可能System.String)」メソッドを認識しないエンティティへのLINQを、そしてこの方法は、することはできません。http://jaider.net

関連する問題