Проверьте, содержит ли список объектов другой список (только свойство) в C # Linq

#c# #linq

#c# #linq

Вопрос:

У меня есть два списка:

Один список из базы данных, содержащий объекты -> SystemList

 public class MyObject
{
    public short Id { get; set; }
    public string Name { get; set; }
}
 

Один список от пользователя, который содержит идентификаторы из объектов -> Список пользователей

 List<short> UserList;
 

Я хочу написать в linq запрос, который проверяет, все ли элементы из списка пользователей находятся в системном списке

Я решил это временно, используя это:

 bool hasAllItems = true;
foreach (var g in UserList) {
    hasAllItems = hasAllItems amp;amp; SystemList.Any(a => a.Id == g);
}
 

Я знаю, что это можно улучшить.

Комментарии:

1. Я полностью поддерживаю вас в ваших начинаниях.

2. Вам действительно нужно предоставить более подробную информацию, если вы хотите получить достойный ответ

3. Это было бы что-то вроде UserList.Except(SystemList).Any() , но многое зависит от того, какова именно структура двух списков, а также от того, что вы пробовали до сих пор

4. Невозможно дать вам конкретный ответ без каких-либо подробностей в списке. Даже если вы предоставили эти данные, звучит так, будто вы просите нас сделать это за вас. Что вы пробовали?

5. Я обновляю вопрос. Спасибо за вашу помощь

Ответ №1:

Вы можете использовать только Linq:

 bool hasAllItems = UserList.All(s => SystemList.Any(mo => mo.Id == s));