我使用LINQ到NHibernate並在比較字符串時遇到一個奇怪的問題。下面的代碼工作正常,但是當我取消註釋: //MyCompareFunc(dl.DamageNumber,damageNumberSearch)& & 和評論: dl.DamageNumber.Contains(damageNumberSearch)& & 然後分解,並似乎MyCompareFunc()總是返回true,而dl.DamageNumber.Contains(damageNumberSearch)有時返回true,有時返回false。LINQ到NHibernate和字符串比較的奇怪問題
換句話說,當我在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);
}
謝謝托馬斯,但在我的特殊情況下,比較是通過數字完成的。事實上,我在「MyCompareFunc」中對string.Contains的使用類似於:「1」.Contains(「12345」) – 2010-02-21 09:56:24