Это не позволяет вам передать string
, как вы просили в своем вопросе, но он все равно может работать для вас.
Метод OrderByDescending
принимает Func<TSource, TKey>
, поэтому вы можете переписать свою функцию следующим образом:
List<Student> QueryStudents<TKey>(Func<Student, TKey> orderBy)
{
return existingStudents.OrderByDescending(orderBy).ToList();
}
Существуют и другие перегрузки для OrderByDescending
, которые берут Expression<Func<TSource, TKey>>
и / или IComparer<TKey>
. Вы также можете посмотреть на них и посмотреть, предоставляют ли они вам что-нибудь полезное.
"Пред Windows 2000" имя т.е. DOMAIN\SomeBody
, Somebody
часть известна как sAMAccountName.
Так попытка:
using(DirectoryEntry de = new DirectoryEntry("LDAP://MyDomainController"))
{
using(DirectorySearcher adSearch = new DirectorySearcher(de))
{
adSearch.Filter = "(sAMAccountName=someuser)";
SearchResult adSearchResult = adSearch.FindOne();
}
}
someuser@somedomain.com.au является UserPrincipalName, но это не обязательное поле.
Alan уже дал Вам, правильный ответ - использует sAMAccountName
для фильтрации пользователя.
я добавил бы рекомендацию на Вашем использовании DirectorySearcher
- если Вы только хотите одно или два сведения, добавьте их в "PropertiesToLoad"
набор DirectorySearcher
.
Вместо того, чтобы получить целый большой пользовательский объект и затем выбрать один или два объекта, это просто возвратит точно те биты, в которых Вы нуждаетесь.
Образец:
adSearch.PropertiesToLoad.Add("sn"); // surname = last name
adSearch.PropertiesToLoad.Add("givenName"); // given (or first) name
adSearch.PropertiesToLoad.Add("mail"); // e-mail addresse
adSearch.PropertiesToLoad.Add("telephoneNumber"); // phone number
Это - просто обычное свойство AD/LDAP, называет Вас, должен определить.
Добавьте ссылку на COM «Библиотека активных типов DS»
Int32 nameTypeNT4 = (int) ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_NT4;
Int32 nameTypeDN = (int) ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_1779;
Int32 nameTypeUserPrincipalName = (int) ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_USER_PRINCIPAL_NAME;
ActiveDs.NameTranslate nameTranslate = new ActiveDs.NameTranslate();
// Convert NT name DOMAIN\User into AD distinguished name
// "CN= User\\, Name,OU=IT,OU=All Users,DC=Company,DC=com"
nameTranslate.Set(nameTypeNT4, ntUser);
String distinguishedName = nameTranslate.Get(nameTypeDN);
Console.WriteLine(distinguishedName);
// Convert AD distinguished name "CN= User\\, Name,OU=IT,OU=All Users,DC=Company,DC=com"
// into NT name DOMAIN\User
ntUser = String.Empty;
nameTranslate.Set(nameTypeDN, distinguishedName);
ntUser = nameTranslate.Get(nameTypeNT4);
Console.WriteLine(ntUser);
// Convert NT name DOMAIN\User into AD UserPrincipalName Name.User@Company.com
nameTranslate.Set(nameTypeNT4, ntUser);
String userPrincipalName = nameTranslate.Get(nameTypeUserPrincipalName);
Console.WriteLine(userPrincipalName);