LinqToSQL:使用自定义方法计算表达式
LinqToSQL: Using custom methods to calculate expressions
我正在运行 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,所以我不确定哪里出了问题。删除显式日期转换会产生相同的错误
如错误消息所述,方法 AddByUnit
(可能是 extension method
)在 运行 时未找到 运行。确保您的代码可以看到此方法。
给你 Linq to Sql
的重要提示
您不能将自定义方法用于 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();
我正在运行 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,所以我不确定哪里出了问题。删除显式日期转换会产生相同的错误
如错误消息所述,方法 AddByUnit
(可能是 extension method
)在 运行 时未找到 运行。确保您的代码可以看到此方法。
给你 Linq to Sql
的重要提示您不能将自定义方法用于 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();