我有登录名的字符串集合。我为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))";
答案 0 :(得分:0)
您可以将GetFilter创建为:
public string GetFilter(IEnumerable<string> logins)
{
return string.Format("(|{0})",
string.Concat(logins.Select(x => string.Format("(loginName={0})", x))));
}
答案 1 :(得分: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);
}