2011-10-11 2 views
0

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

+0

Ваш блок 'if (item.IsApproved)' кажется избыточным, поскольку вы уже фильтруете его. –

+0

Lol ... Я сделал оператор if перед тем, как добавить оператор Linq ... Я даже не поймал это. Фиксация сейчас. –

ответ

2

Похоже, вы, вероятно, хотите простое соединение в 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; 

Edit: Учитывая, что я не знаю, как присоединение к IEnumerable с IQueryable может повлиять на вещи/проблемы вызывают в данном случае , here's a blog about doing that.

+0

Как только я уйду в офис завтра утром, я попытаюсь это сделать! Отличный подход. –

+0

Это работало впервые без регулировки! –

Смежные вопросы