Список участников всех профилей пользователей

Мне нужно перечислить все профили конкретного пользователя, но я не могу найти, как это сделать.

public abstract ProfileInfoCollection FindProfilesByUserName(
    ProfileAuthenticationOption authenticationOption,
    string usernameToMatch
)

Возвращает мне огромное количество нежелательных вещей вот пример:

"UserName": "Alex",
"IsAnonymous": false,
"IsDirty": false,
"LastActivityDate": "2013-08-16T00:44:30.98+03:00",
"LastUpdatedDate": "2013-08-16T00:25:15.663+03:00",
"Properties": [
     {
         "Name": "Name.First",
         "IsReadOnly": false,
         "DefaultValue": "",
         "PropertyType": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
         "SerializeAs": 0,
         "Provider": {
             "ApplicationName": "/",
              "Name": "AspNetSqlProfileProvider",
              "Description": "SQL profile provider."
          },
          "Attributes": {
               "AllowAnonymous": false
          },
          "ThrowOnErrorDeserializing": false,
               "ThrowOnErrorSerializing": true
          }
]

Есть ли способ перечислить только используемые / перечисленные в профилях web.config?

Обновление: я также попытался написать свое расширение для одного провайдера, но не могу найти, где ProfileBase сохраняет профили / группы профилей.

Спасибо!

1 ответ

Решение

После долгого времени поиска я нашел только один способ решить проблему.

Я написал простую функцию, например:

public Dictionary<string, ProfileGroupBase> GetGroupProfiles(MembershipUser user, string[] groups)
{
     return groups.ToDictionary(group => group, GetUserProfile(user).GetProfileGroup);
}
public Dictionary<string, object> GetProfile(MembershipUser user, string[] properties)
{
        return properties.ToDictionary(prop => prop, prop => UserProfile(user).GetPropertyValue(prop));
}

И использование:

x.GetGroupProfiles(Membership.GetUser("Rafael"), new[] { "Name" })
Другие вопросы по тегам