سؤال

لدي قائمتان وأحتاج إلى معرفة ما إذا كانت هناك أي مباريات. لقد حاولت استخدام request.Interests.Intersect(x.Post.Tags.Split(' ')).Count() > 0 لكني أحصل على الخطأ

System.NotimplementEdException: لا يتم تنفيذ الطريقة المتقاطعة.

لذلك ، جربت وظيفة عودية تُرجع منطقيًا. وهو كما لو تم تجاهل مكالمة الوظيفة.

ها هي وظيفتي

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)
                                                                                           )
                                        )

عند إنشاء interateintesexpression لديه نقطة توقف فيه ، فإنه لا يتوقف مؤقتًا. حاولت بناء وظيفة متكررة لبناء التعبير أثناء الطيران ، لكن لا يمكنني معرفة كيفية سلسلة تعبيرات LINQ معًا. أي أفكار حول كيفية تحقيق ذلك باستخدام LINQ الديناميكي لـ LINQ إلى nhibernate؟

هل كانت مفيدة؟

المحلول

اضطررت إلى تغييره لاستخدام HQL وبناء استعلام HQL ديناميكيًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top