2016-10-31 8 views
0

Я использую C# и Nhibernate для поиска в моей базе данных, я должен искать каждый термин, разделенный запятой, например: foo, bar - Мне нужно искать по любому регистру, который содержит fooORбар.Nhibernate Dynamic Search with Comma

Я использую код ниже:

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; 

Но это не работает: с

Некоторые sugestions?

Thx.

ответ

0

NHibernate должен переписать запрос Linq в SQL Query, чтобы выполнить его в отношении БД. Ваш запрос Linq очень сложный. NHibernate может не перевести его.

Без сообщения об ошибке очень сложно догадаться, что именно происходит не так.