Problem mit der Unfähigkeit, eine benutzerdefinierte Methode in einer LINQ2DB -Abfrage zu verwenden
Posted: 03 Jun 2025, 18:00
Ich verwende linq2db Version 5.3.2 (leider kann ich nicht ein Upgrade, da die Anwendung an andere Anwendungen gebunden ist und die Versionskompatibilität zu Problemen verursacht wird). Ein Fehler, weil LINQ2DB meine benutzerdefinierte ExtractNumber -Methode nicht unterstützt. Ich habe auch versucht, regex.replace (d.invoicenumber.toString (), "[^0-9]", ") zu verwenden, stieß jedoch auf das gleiche Problem. Funktion)? < /p>
Code: Select all
public void InsertPayoffData()
{
using var db = _db();
var query =
from p in db.Payoff1C
join d in db.Debit on new { Number = p.InvoiceNumber, Date = p.InvoiceDate }
equals new { Number = ExtractNumber(d.InvoiceNumber.ToString()), Date = d.InvoiceDate }
join k in db.Kredit on new { Number = p.PayDocNumber.ToString(), Date = p.PayDocDate }
equals new { Number = ExtractNumber(k.PayDocNumber.ToString()), Date = k.PayDocDate }
where !db.Payoff.Any(pf =>
pf.Debit_ID == d.DebitId &&
pf.Kredit_ID == k.Kredit_ID)
select new Payoff
{
Debit_ID = d.DebitId,
Kredit_ID = k.Kredit_ID,
PayoffDate = p.PayDocDate,
PayoffSum = p.PayOffSum,
PayoffType = 0
};
var result = query.ToList();
db.BulkInsert(result);
}
private int ExtractNumber(string value)
{
if (string.IsNullOrEmpty(value))
{
return 0;
}
var numberString = new string(value.Where(char.IsDigit).ToArray());
return int.TryParse(numberString, out int result) ? result : 0;
}