2010-08-12 3 views
3

У меня есть 2 списка, и мне нужно знать, есть ли совпадения. Я попытался с помощью request.Interests.Intersect(x.Post.Tags.Split(' ')).Count() > 0, но я получаю ошибкуLinq to Nhibernate - Сравнить 2 списка

System.NotImplementedException: метод Intersect не реализован.

Итак, я попробовал рекурсивную функцию, которая возвращает bool. И это как будто вызов функции просто игнорируется.

Вот моя функция

private bool GenerateInterestsExpression(string postTags, string[] interests) 
     { 
      if (interests.Length == 0) 
       return false; 

      string interest = interests[0]; 

      var newInterests = interests.ToList(); 
      newInterests.Remove(interest); 

      return GenerateInterestsExpression(postTags, newInterests.ToArray()) || postTags.ToLowerInvariant().IndexOf(interest.ToLowerInvariant()) >= 0; 
     } 

вот что соответствующая часть моего выражения Linq выглядит.

request.Profile.Tags.Count == request.Interests.Length 

             || 

             (
              request.Profile.Tags.Count != request.Interests.Length 

              && 

              x.Post.Tags != String.Empty 

              && 

              (
               GenerateInterestsExpression(x.Post.Tags, request.Interests) 
                          ) 
             ) 

Когда GenerateInteresExpression имеет в нем точку останова, он не останавливается. Я попытался построить рекурсивную функцию для создания выражения на лету, но я не могу понять, как сгруппировать выражения linq вместе. Любые идеи о том, как это сделать с динамическим linq для linq для nhibernate?

+0

Мне очень нужна поддержка пересечения! –

ответ

1

Мне пришлось изменить его, чтобы использовать HQL и динамически строить запрос HQL.

+0

У вас есть примеры, когда у вас есть работа с HQL, поскольку у меня есть аналогичный запрос. , – leora

Смежные вопросы