J'utilise LINQ à NHibernate et j'ai rencontré un problème étrange en comparant les chaînes. code suivant fonctionne très bien, mais quand je Décommentez: //MyCompareFunc(dl.DamageNumber, damageNumberSearch) & & et commentaire: dl.DamageNumber.Contains (damageNumberSearch) & & il se décompose et semble que MyCompareFunc() retourne toujours vrai alors que dl.DamageNumber.Contains (damageNumberSearch) retourne parfois vrai et retourne parfois false. En d'autres termes, lorsque j'utilise string.Contains() dans une requête LINQ directement cela fonctionne, mais quand je le déplace vers une méthode, cela ne fonctionne pas.Problème étrange avec LINQ à NHibernate et comparaison de chaînes
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);
}
Merci Thomas, mais dans mon cas particulier, la comparaison se fait sur les nombres. En effet mon utilisation de string.Contains dans "MyCompareFunc" est quelque chose comme: "1" .Contains ("12345") –