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

关于linq语句中调用函数的问题
if (-1 != caid)//在指定类别中搜索
  {
  qas = qas.Where(qa => qa.CaID == caid);
  }
   
  qas = qas.Where(qa => (qa.PublishedTime.Value.Date >= (DateTime.Now.Date - timespan)));//关键字,时间段;
  if (ww != "")
  {  
  qas = qas.Where(qa => ((Utility.week(Convert.ToDateTime(qa.PublishedTime))) == ww));  
  }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
大家请看,在第一个查询是没有问题的,但第二个,我调用了一个自己定义的函数将日期转化成第几周再查询就要出错,错误信息是Linq无法转换自定义函数,我想问一下大家,这种情况应该怎么处理啊?在线等!

------解决方案--------------------
有一点你没有搞明白 也是 framework当时对linq 异常不完善导致的。
就是 你必须 知道 你的linq语句 是要被转换成sql执行的,你可以跟踪 查看你的 qas 其实 是一条sql语句,所以 你应该明白 它还没强大到 可以把任何 fw里的函数 或者 自定义的函数 自动转换为sql 所以会 异常。

记得一开始 一个 datetime.toshorttimestring 都会异常 不知道现在好没...