【发布时间】:2015-05-18 07:16:27
【问题描述】:
我想获取某个给定DateTime 的周数。
public static int WeekOf(DateTime? date)
{
if (date.HasValue)
{
GregorianCalendar gCalendar = new GregorianCalendar();
int WeekNumber = gCalendar.GetWeekOfYear(date.Value, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
return WeekNumber;
}
else
return 0;
}
然后我用上面的方法在:
public static List<ExpressionListDictionary> MyMethod(int weeknr)
{
using (DataAccessAdapter adapter = CreateAdapter())
{
LinqMetaData meta = new LinqMetaData(adapter);
var q = (from i in meta.Test
where WeekOf(i.StartDate) == weeknr
select new ExpressionListDictionary()
{
{"SomeId", i.Id}
}
);
return q.ToList();
}
}
最后:
List<ExpressionListDictionary> someIDs = MyMethod(weeknr);
/* weeknr = 19 -> step by step debugging */
说明:在执行当前网络请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详情: SD.LLBLGen.Pro.ORMSupportClasses.ORMQueryConstructionException:二进制表达式 '(WeekOf(Convert(EntityField(LPLA_1.StartDate AS StartDate))) == 19)' 不能转换为谓词表达式。
我在 return q.ToList(); 时确实得到了标题错误; .我怎样才能做到这一点?
【问题讨论】:
-
从类名看,你在用llblgen库吗?
-
是的,我确实在我的项目中使用了 llblgen 库
-
也许在这种情况下添加括号会有所帮助。比如:where (WeekOf(i.StartDate) == weeknr)
标签: c# linq llblgenpro