Проверьте, совпадают ли идентификаторы в строке через запятую с какими-либо идентификаторами в другом массиве строк

Я работаю над системой сообщений в блоге, используя Umbraco CMS (v7), где в каждом сообщении можно выбрать несколько категорий, чтобы пользователи могли отфильтровать их во внешнем интерфейсе; категории для сообщений блога хранятся в виде строки, разделенной запятыми, с использованием идентификаторов категорий в качестве значений.

Затем я планирую отфильтровать сообщения блога, используя значения строки запроса, и проверить, соответствует ли какая-либо из категорий записей блога какой-либо из строк запроса идентификатора.

Вот некоторые примеры данных:

    Query String Categories = 1,5
    Blog Post 1 Categories: 1,2,5,7
    Blog Post 2 Categories: 6,7
    Blog Post 3 Categories: 1,6
    Blog Post 4 Categories: 3,4,5

И я ожидаю, что фильтрация возвратит сообщения 1, 3 и 4 в блоге, потому что категории сообщения 2 не соответствуют ни одному из идентификаторов в строке запроса.

Вот немного моего кода, над которым я работал; это не работает, но вы можете увидеть, чего я пытаюсь достичь:

var categories = !Request["c"].IsEmpty() ? Request["c"] : ""; // Query String Values
var categoryList = new List<int>(); // New integer list to add the split query string values to
IEnumerable<dynamic> Items = Umbraco.Content(1052).Descendants("BlogPost"); // Dynamic list of blog posts

if(!categories.IsEmpty()) // If the query string has some values
{
    foreach(var cat in categories.Split(',')) // Split the query string…
    {
        categoryList.Add(Convert.ToInt32(cat)); … and convert and add these id's to my integer list
    }       
     // The line that isn't really working, but the line i'm trying to add the filter to
    Items = Items.Where(categoryList.Contains(x => x.searchCategories.Any())).ToList();
}

Итак, мой вопрос: как я могу проверить, соответствует ли какая-либо из категорий элементов какой-либо из категорий в значениях строки запроса, чтобы получить результаты, аналогичные моим примерным данным?

Для разработчиков Umbraco: я использую многоузловое средство выбора дерева для выбора категорий из поста в блоге, содержимое ограничено моим списком узлов "категорий".

1 ответ

Если элементы заполнены правильно, вы должны получить желаемые результаты, используя следующий код:

var categoryList = categories.Split(',').Select(c=>int.Parse(c));   
Items = Items.Where(x => categoryList.Contains(x.categoryId)).ToList();
Другие вопросы по тегам