LINQ to NHibernateを使用していますが、文字列の比較中に奇妙な問題が発生しました。次のコードは正常に機能しますが、コメントを外すと、// MyCompareFunc(dl.DamageNumber、damageNumberSearch)&&とコメント:dl.DamageNumber.Contains(damageNumberSearch)&&すると機能しなくなり、MyCompareFunc()はdl中に常にtrueを返すように見えます。 DamageNumber.Contains(damageNumberSearch)は、trueを返す場合と、falseを返す場合があります。
つまり、LINQクエリでstring.Contains()を直接使用すると機能しますが、メソッドに移動すると機能しません。
internal List<DamageList> SearchDamageList(
DateTime? sendDateFromSearch, DateTime? sendDateToSearch, string damageNumberSearch,
string insuranceContractSearch)
{
var q = from dl in session.Linq<DamageList>()
where
CommonHelper.IsDateBetween(dl.SendDate, sendDateFromSearch, sendDateToSearch) &&
//MyCompareFunc(dl.DamageNumber, damageNumberSearch) &&
dl.DamageNumber.Contains(damageNumberSearch) &&
insuranceContractSearch == null ? true : CommonHelper.IsSame(dl.InsuranceContract, insuranceContractSearch)
select dl;
return q.ToList<DamageList>();
}
private bool MyCompareFunc(string damageNumber, string damageNumberSearch)
{
return damageNumber.Contains(damageNumberSearch);
}