日期:2014-05-20  浏览次数:20876 次

已经被Linq to entity折磨疯了,谁帮我看下这个错误.

from a in fkd.Deliveries.Take(10)
   where a.OrderStatusID == 5
   select new
   {
     week = SqlFunctions.DateName(strWeek, a.ActualSendTime.Value)
   };


想返回当前日期所属第几周,结果报如下错误!!
LINQ to Entities does not recognize the method 'System.String DateName(System.String, System.Nullable`1[System.DateTime])' method, and this method cannot be translated into a store expression.
LINQ?to?Entities

------解决方案--------------------
SqlFunctions.DateName
这个在哪儿定义的
------解决方案--------------------
try..
SqlFunctions.DateName(strWeek, a.ActualSendTime)
------解决方案--------------------


不用自带的,自己写一个行吗?我测试可以的

from a in fkd.Deliveries.Take(10)
   where a.OrderStatusID == 5
   select new
   {
     week = weekofyear( a.ActualSendTime.Value)
   };


 public static string weekofyear(DateTime dtime) 
           { 
               int weeknum = 0; 
               DateTime tmpdate = DateTime.Parse(dtime.Year.ToString() + "-1" + "-1"); 
               DayOfWeek firstweek = tmpdate.DayOfWeek; 
               //if(firstweek) 
               for (int i = (int)firstweek + 1; i <= dtime.DayOfYear; i = i + 7) 
               { weeknum = weeknum + 1; }
               return weeknum.ToString();
           }
 
------解决方案--------------------
引用:
应该不行吧,怎么写的怎么能转换成sql语句呢?

你可以把查询分成为两段,前一段使用EF,后一段使用Linq to Object。