2012-03-01 67 views
0

我有以下代码:LINQ - 日期时间为String再次

  result = from i in _dbContext.Meetings 
        where i.UserInvitedID == CurrentUserID && i.MeetingStatus == null && i.AllowedTime.AllowedDate.Day >= date 
        //where i.UserInvitedID == CurrentUserID && i.MeetingStatus == null && EntityFunctions.TruncateTime(i.AllowedTime.AllowedDate.Day) >= date 
        select new ITW2012Mobile.Core.DataTable.MeetingModel2() 
        { 
         Name = i.UserInviter.FirstName + " " + i.UserInviter.LastName, 
         Company = i.UserInviter.Company, 
         MeetingID = i.MeetingID, 
         Time = EntityFunctions.AddMinutes(EntityFunctions.AddHours(i.AllowedTime.AllowedDate.Day, i.AllowedTime.Hour).Value, i.AllowedTime.Minute).Value.ToString("0:dddd, MMMM d, yyyy 0:t"), 
         Image = i.UserInviter.ProfileImage, 
         Username = i.UserInviter.aspnet_User.UserName 
        }; 

时间是字符串。当然,我得到

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

但如何在我的情况下正确写入?

回答

0

根本不能在L2E中使用.ToString。这是一个EF限制。

你所要做的是,在物空间 - 例如,一个.AsEnumerable()

+0

后,我该怎么办呢?在选择部分我必须设置时间,对吧? – John 2012-03-01 15:56:26

+1

你可以这样做:'select new {A = iA,B = iB})。AsEnumerable()。选择(i => new MeetingModel2 {A = iAToString(...),B = iB);' – 2012-03-01 16:03:39

+0

是非常长的脚本(我有大约相似的10个地方,不能合并成一个) – John 2012-03-01 16:09:48