2016-12-29 16 views
0

DateTimestringに変換しようとしています。しかし、それは私にLINQエラーを示していますエンティティへエラーを示す文字列変換の日付時刻に

LINQは方法、及びこの方法では、店舗の表現に変換することができない「可能System.StringのToString(可能System.String)」メソッドを認識しません。ここで

は、コントローラ内の私のコードです:

public ActionResult DaywiseData(DateTime date) 
{ 
    try 
    { 
     var att = db.Attendances 
       .Where(d => d.Date == date) 
       .Select(s => new AttendanceViewModel 
        { 
         Date = s.Date, 
         aa = DateTime.Parse(s.InTime.ToString()).ToString("HH:mm tt"), //Error is not showing after removing this line 
         InTime = s.InTime, 
         OutTime = s.OutTime, 
         EmployeeName = s.Employee.Name, 
         EmployeeUsername = s.Employee.Username 
        }) 
        .ToList(); 
     return Json(att); 
    } 
    catch (Exception ex) 
    { 
     return Json(ex.Message); 
    } 
} 
+0

エラーは何ですか?あなたは答えを更新できますか? –

+0

@AkshayKhandelwal OPがすでにエラーを投稿しました。 –

+0

上にエラーがあります。 –

答えて

2

あなたのLINQは、toString()をサポートしていないSQLクエリに変換されます。 DateTimeとして残し、後でstringに変換します。あなたの選択の内側ExpressionをSQLに変換し、データベース・サーバ上で実行されるため、この

public ActionResult DaywiseData(DateTime date) 
{ 
    try 
    { 
     var att = db.Attendances 
       .Where(d => d.Date == date) 
       .Select(s => new AttendanceViewModel 
        { 
         Date = s.Date, 
         DateTime = s.InTime, //dateTime property 
         DateTimeString = string.Empty //string property 
         InTime = s.InTime, 
         OutTime = s.OutTime, 
         EmployeeName = s.Employee.Name, 
         EmployeeUsername = s.Employee.Username 
        }) 
        .ToList(); 
     att.ForEach(a => a.DateTimeString = a.DateTime.ToString("HH:mm tt")); 

     return Json(att); 
    } 
    catch (Exception ex) 
    { 
     return Json(ex.Message); 
    } 
} 
+1

'DateTime.Parse(s.InTime.ToString())'は必須ではなく、 's.InTime'はすでに' DateTime'です。 –

+0

今、働いていますThanxたくさん –

+0

'InTime'が' Nullable'ならどうしますか? –

1

ような何かあなたがエラーを取得しているし、それがDateTime.Parse(s.InTime.ToString()).ToString("HH:mm tt")方法を認識しない理由です。

.Selectを行う前に、クエリの結果を実体化するようにコードを更新します:あなたはここでは2つの選択肢があり

var att = db.Attendances 
    .Where(d => d.Date == date) 
    .ToList() // Here 
    .Select(s => new AttendanceViewModel 
     { 
      Date = s.Date, 
      aa = DateTime.Parse(s.InTime.ToString()).ToString("HH:mm tt"), //Error is not showing after removing this line 
      InTime = s.InTime, 
      OutTime = s.OutTime, 
      EmployeeName = s.Employee.Name, 
      EmployeeUsername = s.Employee.Username 
     }) 
     .ToList(); 
return Json(att); 

または使用ニノの答え@

1

SqlFunctions.StringConvertを使用してみてくださいを。 このように。

aa = DateTime.Parse(SqlFunctions.StringConvert(s.InTime)), //Error is not showing after removing this line 
関連する問題