使用逗号进行Nhibernate动态搜索

时间:2016-10-31 16:52:34

标签: c# linq nhibernate

我正在使用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。

1 个答案:

答案 0 :(得分:0)

NHibernate必须将您的Linq查询重写为SQL查询,以便针对数据库执行它。您的Linq查询非常复杂NHibernate可能无法翻译它。

如果没有错误消息,很难猜出到底出了什么问题。