Создать поисковый фильтр Ldap с рефакторингом метода соединения

1

У меня есть строковая коллекция имен для входа. Я создаю строку фильтра для поиска ldap и метода GetFilter. Как еще можно реорганизовать метод GetFilter. Может быть другой способ создать строку фильтра?

List<string> logins = new List<string> {"211C69C4-D0FA-4CB5-91E5-B6B109B3F784", "311C69C4-D0FA-4CB5-91E5-B6B109B3F784"}

Получить метод фильтрации:

public string GetFilter(IEnumerable<string> logins)
            {
                var result = string.Join("(loginName=", logins.Select(x => (x + ")")));
                return string.Format("(|(loginName={0})", result);
            }

Строка фильтра результатов:

string filter = "(|(loginName=211C69C4-D0FA-4CB5-91E5-B6B109B3F784)(loginName=311C69C4-D0FA-4CB5-91E5-B6B109B3F784))";
Теги:
ldap
refactoring

2 ответа

0
Лучший ответ

Вы можете создать GetFilter как:

public string GetFilter(IEnumerable<string> logins)
{
    return string.Format("(|{0})", 
           string.Concat(logins.Select(x => string.Format("(loginName={0})", x))));
}
0

Я реализовал новую версию:

    public string Get(string filterName, List<string> filterValues)
    {
        var concatFilter = string.Join("", GetItems(filterName, filterValues));
        return string.Format("(|{0})", concatFilter);
    }

    private IEnumerable<string> GetItems(string filterName, IEnumerable<string> filterValues)
    {
        return filterValues.Select(filterValue => Get(filterName, filterValue));
    }

    public string Get(string filterName, string filterValue)
    {
        return string.Format("({0}={1})", filterName, filterValue);
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню