2012-04-30 20 views
0

私はLinqの初心者です。以下のクエリは「System.DateTimeを認識できません」というエラーを返し続けます。私はParseとConvertを試してみましたが、どちらも動作しません。私のクエリは次のとおりです。LINQ to Entitiesは、 'System.DateTime Parse(System.String)'メソッドを認識しません。

mrcEntities context = GetContext();

 var query = from c in context.tblClients 
        where (c.FirstName != null || c.LastName != null) 
         && c.EligibilityDate >= DateTime.Parse("10/01/2011") 
         && c.EligibilityDate <= DateTime.Parse("04/30/2012") 
         orderby c.ClientID 
        select new 
        { 
         ClientID = c.ClientID, 
         FirstName = c.FirstName, 
         LastName = c.LastName, 
         MiddleName = c.MidName, 
         SSN = c.SSN, 
         DOB = c.DOB, 
         Sex = c.Gender, 
         Ethnic = c.EthnicCode 
        }; 

     clientRowCnt = query.Count(); 

助けてください。

答えて

4

これは、EFがDateTime.Parseをストアで使用できる関数に変換できないためです。 DateTime.Parse()への呼び出しの結果を置き換え、クエリでこれらの変数を使用する場合、正常に動作するはずです。

var from = DateTime.Parse("10/01/2011"); 
var to = DateTime.Parse("04/30/2012"); 
var query = from c in context.tblClients 
        where (c.FirstName != null || c.LastName != null) 
         && c.EligibilityDate >= from 
         && c.EligibilityDate <= to 
         orderby c.ClientID 
        select new 
        { 
         ClientID = c.ClientID, 
         FirstName = c.FirstName, 
         LastName = c.LastName, 
         MiddleName = c.MidName, 
         SSN = c.SSN, 
         DOB = c.DOB, 
         Sex = c.Gender, 
         Ethnic = c.EthnicCode 
        }; 

     clientRowCnt = query.Count(); 
2

クエリの外に日付を解析するだけです。 。

DateTime start = new DateTime(2011, 10, 01); 
DateTime end = new DateTime(2012, 04, 30); 

var query = from c..... 

ます。また、安全の突起部で文字列を解析することができますか、値がすでにそれはそう

DateTime start = DateTime.Parse("10/01/2011"); 
DateTime emd = DateTime.Parse(04/30/2012); 

var query = from c..... 

または使用を知っている(でも、それを解析せずに日付を作成するためにコンストラクタを使用ときnは、クエリ、データが取得された後にその部分をクライアント側で実行されるためには。そう

var query = from c... 
select 
    new { 
     EligibilityDate = Datetime.Parse(c.EligibilityDate) 
    } 

これは、解析された値は、選択基準で必要とされている場合のみですそれをDateTime値として供給します。

より良い解決策は、データベーススキーマを修正することです。サーバー上の解析を行い、正しい型指定された列を公開する既存のスキーマに計算された列を追加するだけです。

+0

DateTime.Parseが "from c"に依存するとどうなりますか? 例DateTime.Parse(c.date)? –

+0

ごめんなさい申し訳ありませんか? 「方法を認識しない」が発生しないでしょうか? –

+0

はいありがとうございます。 –

関連する問題