我正在使用c#和Nhibernate在我的数据库中进行搜索,我必须用逗号搜索每个术语,例如: foo,bar - 我必须搜索包含的任何寄存器 foo OR bar 。
我正在使用以下代码:
var terms = Term.Split(',');
terms.Each(term =>
{
query = query.Where(x => x.Code.Contains(term) ||
x.Title.Contains(term) ||
x.Subtitle.Contains(term) ||
x.Type.Code.Contains(term) ||
x.Themes.Any(t => t.Title.Contains(term)) ||
x.Indicators.Any(i => i.Title.Contains(term)) ||
x.Indicators.Any(t => t.Type.Title.Contains(term)) ||
x.Indicators.Any(i => i.Sources.Any(s => s.Institution.Name.Contains(term))) ||
x.Indicators.Any(i => i.Sources.Any(s => s.Institution.Acronym.Contains(term))) ||
x.Indicators.Any(i => i.Sources.Any(s => s.Name.Contains(term))) ||
x.Indicators.Any(i => i.Sources.Any(s => s.Acronym.Contains(term))) ||
x.Indicators.Any(i => i.Sources.Any(s => s.Periodicity.Code.Contains(term))) ||
x.Indicators.Any(i => i.Sources.Any(s => s.Periods.Any(p => p.Date.Day.ToString().Contains(term) || p.Date.Month.ToString().Contains(term) || p.Date.Year.ToString().Contains(term)))) ||
x.Indicators.Any(i => i.Sources.Any(s => s.GeographicScope.Description.Contains(term))) ||
x.Indicators.Any(i => i.Sources.Any(s => s.AggregationLevel.Description.Contains(term))) ||
x.Indicators.Any(i => i.Keywords.Any(k => k.Description.Contains(term)))
);
});
return query;
但它不起作用:c
一些消化?
THX。
答案 0 :(得分:0)
NHibernate必须将您的Linq查询重写为SQL查询,以便针对数据库执行它。您的Linq查询非常复杂NHibernate可能无法翻译它。
如果没有错误消息,很难猜出到底出了什么问题。