我正在使用LINQ to NHibernate,在比较字符串时遇到了一个奇怪的问题。下面的代码运行良好,但当我取消注释: //MyCompareFunc(dl.DamageNumber,damageNumberSearch) &&和注释: dl.DamageNumber.Contains(damageNumberSearch) &&时,它就崩溃了,似乎MyCompareFunc()总是返回true,而dl.DamageNumber.Contains(damageNumberSearch)有时返回true,有时返回false。
换句话说,当我在LINQ query中直接使用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);
}发布于 2010-02-21 19:42:00
Linq使用表达式,而不是编译的函数。如果您使用expression>而不是"compiled“方法,那就没问题了。
https://stackoverflow.com/questions/2305451
复制相似问题