Проверьте, совпадают ли идентификаторы в строке через запятую с какими-либо идентификаторами в другом массиве строк
Я работаю над системой сообщений в блоге, используя 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();