Фильтрация таблицы пользователей по MembershipUserCollection - PullRequest
0 голосов
/ 12 октября 2011

Итак, в моем приложении настроено членство в ASP. У меня также есть отдельная таблица пользователей для управления данными, не относящимися к членству. Во время управления пользователями мне нужно убедиться, что мое приложение запрашивает обе таблицы. У меня есть контроллер ниже, который возвращает список одобренных пользователей, но, похоже, должен быть более простой способ сделать это. Какой лучший способ сделать это?

        QuoteExchangeDB _db = new QuoteExchangeDB();

        [MyAuthorize(Roles = "Administrator")]
        public ActionResult Admin()
        {
            MembershipUserCollection agents = Membership.GetAllUsers();
            IEnumerable<MembershipUser> unfiltered = agents.Cast<MembershipUser>();
            var filtered = unfiltered.Where(u => u.IsApproved);
            List<User> users = new List<User>();
            foreach (var item in filtered)
            {
                if (item.IsApproved)
                {
                    Guid guid = (Guid)item.ProviderUserKey;
                    users.Add(_db.Users.Single(u => u.MembershipGuid.Equals(guid)));
                }
            }
            return View(users);
        }

1 Ответ

2 голосов
/ 12 октября 2011

Похоже, что вы, вероятно, хотите простое объединение в LINQ.

var filtered = Membership.GetAllUsers().Cast<MembershipUser>().Where(u => u.IsApproved);

var users = from f in filtered
        join u in _db.Users on ((Guid)f.ProviderUserKey) equals u.MembershipGuid
        select u;

Возможно, вы могли бы сделать одно утверждение из этого даже:

var users = from f in Membership.GetAllUsers().Cast<MembershipUser>()
    join u in _db.Users on ((Guid)f.ProviderUserKey) equals u.MembershipGuid
    where f.IsApproved
    select u;

Редактировать: Учитывая, что я 'Я не уверен, как объединение IEnumerable с IQueryable может повлиять на вещи / вызвать проблемы в этом случае, вот блог о том, как это сделать .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...