我正在使用通配符进行映射。我收到此错误,因为要搜索的规则的定义仅来自表。
我不知道我在这里做得对多么正确,但结果我有一个错误,我期待你的帮助。
public class Ekstre
{
private readonly DataClasses1DataContext db = new DataClasses1DataContext();
private readonly KdrGnyClassesDataContext kg = new KdrGnyClassesDataContext();
public bool check { get; set; }
public int Id { get; set; }
public DateTime Tarih { get; set; }
public string Kodu { get; set; }
public string Açıklama { get; set; }
public decimal Tutar { get; set; }
public string bankaKod { get; set; }
private string kod = null;
public string muhKod {
get { return kod = kg.kuralTanimlari
.FirstOrDefault(a => Regex.IsMatch(Açıklama, WildCardToRegular(a.kural))).hesapKodu;
}
set { kod = value; }
}
private string hesap = null;
public string hesapAdi {
get {
hesap = !string.IsNullOrWhiteSpace(muhKod) ? db.MUHHESAP.First(p => p.MUHKOD == muhKod).MUHADI1 : null;
return hesap;
}
set => hesap = value;
}
public string kodTipi { get; set; }
}
public static string WildCardToRegular(string value)
{
return "^" + Regex.Escape(value).Replace("\\?", ".").Replace("\\*", ".*") + "$";
}
答案 0 :(得分:0)
您只能在IQuerable上的dbcontext查询上使用受支持的函数。 你有两个选择 1.通过执行ToList()或ToArray()然后.FirstOrDefault(.....)来查询数据库查询 这有一个缺点,它将从db获取所有记录,然后应用您的 对结果起作用。
答案 1 :(得分:0)
public string muhKod {
get
{
var firstOrDefault = kg.kuralTanimlari.ToList()
.FirstOrDefault(a => Regex.IsMatch(Açıklama, WildCardToRegular(a.kural)));
if (firstOrDefault != null)
kod = firstOrDefault.hesapKodu;
return kod;
}
set => kod = value;
}
它的工作非常精美。谢谢。