NHibernate 将本地日期年份和月份与日期集合进行比较

NHibernate compare local date year and month with collections of dates

我想做的是:

tradingObjectQueryOver.Where(
  Restrictions
    .On<OrderDealDto>(d => d.UnderlyingContractMaturity.Value.ToContractName())
    .IsInG(filter.ContractDates.ToContractName()));

其中

public const string ContractNameFormat = "MMMyy";
public static string ToContractName(this LocalDate date)
{
    return date.ToString(ContractNameFormat, UsCulture).ToUpper();
}

因此我不能调用 d.UnderlyingContractMaturity.Value.ToContractName() 因为 SQL 对像 ToString 这样的 c# 方法一无所知。解决此问题的最简单方法是什么,例如 TSQL 依赖函数?

new SQLFunctionTemplate(NHibernateUtil.String, "FORMAT(?1, 'yyyMM', 'us-US')");

但同时我不想降低性能,这只是查询的一小部分,数据库中有 100k-10m 元素的规模。

所以我最终在 sql 端使用了一个函数

ALTER FUNCTION [dbo].[f_ToContractName] (@date DATE)
RETURNS NVARCHAR(5)
AS 
BEGIN
    RETURN UPPER(REPLACE(RIGHT(CONVERT(VARCHAR(9),@date, 6), 6), ' ', ''))
END