linqでカスタム関数を書く必要があります。linq節でカスタム関数を書く方法
private short GetSignByEntityType(string entityType, InvoiceReportType invoiceReportType)
{
if (invoiceReportType == InvoiceReportType.WithholdingTaxReport)
{
if (entityType == "R") return 1;
if (entityType == "I") return -1;
}
return this._sign;
}
var headerDataWithBook1Rates = (
from hd in headerDataToUse
from vi in voucherItems.Where(x => x.VoucherID == hd.VoucherID && x.Sign == GetSignByEntityType(hd.EntityType, request.ReportType)).DefaultIfEmpty()
from dvi in draftVoucherItems.Where(x => x.DraftVoucherID == -hd.VoucherID && x.Sign == GetSignByEntityType(hd.EntityType, request.ReportType)).DefaultIfEmpty()
from vacc in accounts.Where(x => x.ID == vi.AccountID).DefaultIfEmpty()
from dvacc in accounts.Where(x => x.ID == dvi.AccountID).DefaultIfEmpty()
.....
エラーが発生します。
System.NotSupportedException:メソッド 'Int16型 GetSignByEntityType(可能System.String、 Enka.Gfs.Domain.SharedEntities.Request.InvoiceReportType)は、' SQLへの サポート翻訳を持っていません。
どうすればこの問題を解決できますか?
純粋なLINQを使用していて、EntityFramework/Linq-to-SQLを使用している場合は、これを行うことができます。 SQLサーバ上であなたの関数を実行しようとしていますが、 'GetSignByEntityType()'が何を意味するのかは明らかではありません。 – AndrewP