Динамический поиск в общем списке - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь создать функцию для динамического поиска в общем списке в C #.

Я создал функцию, которая использует отражение.

List<T> Search<T>(List<T> lst, string propertyName, string value)
{
    var searchedList = (from item in lst
                        where item.GetType()
                                  .GetProperty(propertyName)
                                  .GetValue(item)
                                  .ToString() == value
                        select item)
                       .ToList();
}

Кроме того, я пыталсявызовите метод FindALL в списке, используя отражение без удачи.Кто-нибудь знает, как выполнить эту функцию.

1 Ответ

0 голосов
/ 06 февраля 2019

Я бы переместил отражение из цикла и, возможно, имел бы компаратор.

public IEnumerable<T> ReflectionSearch<T>(IEnumerable<T> items, string propName, string value, StringComparer comparer = null)
{
    var t = typeof(T).GetProperty(propName);
    if (t == null) throw new Exception("No such prop");
    comparer = comparer ?? StringComparer.OrdinalIgnoreCase;
    foreach (var item in items)
    {
        var v = t.GetValue(item)?.ToString();

        if (comparer.Equals(v, value))
            yield return item;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...