Linq to Nhibernate - 比较2个列表

时间:2010-08-12 17:18:52

标签: c# linq-to-nhibernate linq-expressions intersect

我有2个列表,我需要知道是否有任何匹配。我已尝试使用request.Interests.Intersect(x.Post.Tags.Split(' ')).Count() > 0,但收到错误

  

System.NotImplementedException:The   方法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 for nhibernate的动态linq完成这个的任何想法?

1 个答案:

答案 0 :(得分:1)

我必须将其更改为使用HQL并动态构建HQL查询。