【发布时间】:2010-09-24 20:28:52
【问题描述】:
在我正在使用的应用程序的数据库中,有一条记录具有“日期”字段。在代码中的许多地方,我们需要将其转换为 Fiscal Year 以进行分组、选择和过滤。因此,这里有一些查询可能是什么样子的示例:
var query = from r in DB.records
let fy = r.Date.Month >= 10 ? r.Year + 1 : r.Year
where fy = 2010
select r;
现在我知道我可以编写一个表达式方法来使用相同的过滤器,但是如果我想用它来选择和分组呢?我不想在所有查询中一遍又一遍地写第二行。能做到就好了:
var query = from r in DB.records
let fy = r.Date.GetFY()
where fy = 2010
group r by fy into g
select g.Count();
这样,不同的客户端可能有不同的 FY 定义等,并且它们都被定义在同一个地方。有没有办法做到这一点?编写普通的 GetFY 方法只会引发“无法转换为 SQL”(或实际上是什么)异常。显然,这可以在某种程度上转换为 SQL,我只是不知道是否可以以一种简单的方式重新创建 LINQ to SQL 以重用。
提前致谢。
【问题讨论】:
标签: c# linq linq-to-sql