如何在LINQ查询中使用此类扩展。 我收到错误:
方法'System.DateTime AddBusinessDays(System.DateTime,Int32)'具有 没有支持的SQL转换。
var CProcess = (from m in DataContext.csrcallds
let scheddt = FluentDateTime.DateTimeExtensions.AddBusinessDays((DateTime)m.scheduledon, 2)
where m.scheduledon >= earliestDate
&& m.scheduledon <= objdate1.DateStart
&& m.calltype == "CHQRUN"
&& (SqlMethods.DateDiffDay(scheddt, m.completedon) > 2)
group m by new { m.scheduledon.Value.Year, m.scheduledon.Value.Month } into p
orderby p.Key.Year ascending, p.Key.Month ascending
select new Date1()
{
theDate = DateTime.Parse($"{p.Key.Month} - {p.Key.Year}"),
theCount = p.Count(),
theString = $"{p.Key.Month} - {p.Key.Year}"
});
答案 0 :(得分:2)
您正在获得正确的响应,因为该名称没有SQL函数,如果您的查询尚未实现,linq to sql将尝试将您的所有语句转换为sql语句,当然您的扩展函数可以&# 39;转换。
您可以将函数添加到您的sql实例本身或首先实现查询,而不是在内存中调用您的数据函数。
此外,如果你的orm支持它,你可以在sql中创建一个包含你的函数功能的存储过程,然后通过orm调用存储过程。
答案 1 :(得分:-1)
我这样做了:
let bundle = Bundle(for: type(of: self))
if let theURL = bundle.url(forResource: "response", withExtension: "json") {
do {
let data = try Data(contentsOf: theURL)
if let parsedData = try? JSONSerialization.jsonObject(with: data) as! [String:Any] {
grok(parsedData)
}
} catch {
print(error)
}
}
我使用了.AsEnumerable(),并在查询中使用了该方法。