我正在运行Linq To SQL查询,并希望根据表格中的某些设置检索计算列,我想在日期字段中添加时间单位。
我正在运行以下内容:
var q = from p in db.PublicHolidays
select new {
Holiday = s.Holiday,
ReminderDay = Convert.ToDateTime(p.Holiday).AddByUnit(p.ReminderUnits, -p.ReminderQuantity)
};
在我的日期计算中,我收到'System.DateTime' does not contain a definition for 'AddByUnit'
。
Intellisense会调出AddByUnit所以我不确定是什么问题。删除显式日期转换会产生相同的错误
答案 0 :(得分:1)
正如错误消息所示,未发现方法AddByUnit
(可能是extension method
)在运行时运行。确保您的代码可以看到此方法。
您无法在linq-to-sql
中使用自定义方法。根据您使用的提供商,它不会支持,因为linq-to-sql
会尝试将您的linq query
转换为sql query
。尝试将anonymous object
所需的属性带入具体结果,并在内存中引导它。样品。
// call ToList() to execute it on database and bring to memory.
var list = (from p in db.PublicHolidays
select new {
Holiday = s.Holiday,
ReminderUnits = p.ReminderUnits
ReminderQuantity = p.ReminderQuantity
}).ToList();
// use it in memory
var result = list.Select(x => new {
Holiday = x.Holiday,
ReminderDay = Convert.ToDateTime(x.Holiday).AddByUnit(x.ReminderUnits, -p.ReminderQuantity))
}).ToList();