Пересечение двух листов с разными объектами внутри

Всем привет.

Есть 2 коллекции:

List<string>(keys) и PropertyInfo[](properties). Нужно найти пересечение properties.Name с keys.

Задача, которую решаю:

Получаю из INI-файла List<string>(keys) по указанной секции. Дальше из указанного дженерика получаю свойства, проверяю, какие keys совпадают с названиями свойств из properties, создаю экземпляр класса, вставляю данные из ini-файла в свойства и возвращаю из метода созданный класс.

Написанный код:

public T GetEntitiesBySection<T>(string section)
{ 
    var keys = GetKeys(section);
    var instance = Activator.CreateInstance(typeof(T));
    var properties = typeof(T).GetProperties().Where(prop => prop.CanRead && prop.CanWrite);

    foreach (var prop in properties) //вот здесь уже должны быть только те свойства, имена которых совпадают с keys
        prop.SetValue(instance, Read(section, prop.Name));

    return (T)instance;
}

Я помню про существование Intersect, но не могу понять, как работать с данный методом, когда внутри листов разные объекты. Конечно, можно сделать, properties.Select(x => x.Name).Intersect(keys), но это вернёт string, а мне нужно PropertyInfo.

Конечно, можно с лёгкостью перебрать всё через цикл foreach и проблема решится, но хочется через linq


Ответы (1 шт):

Автор решения: tym32167

Тут не надо пересечения, достаточно просто фильтрации

properties  = properties.Where(p=>keys.Contains(p.Name)); ?
→ Ссылка