Оператор Linq Query after Where не возвращает данные отношения - PullRequest
0 голосов
/ 21 сентября 2010
public List<Store> GetAllFriendsTopStores(long uid, List<long> users)
{
    using (var entities = new myEntities()) {
        var v = entities.DbUsers
            .Where( x => users.Contains( x.uid ))
            .Stores // i can't select stores here?  Why is this???
    }
}

В этом случае магазины - это свойство навигации ... Мне нужно иметь возможность получить доступ к объектам магазинов для моих друзей в этом сценарии.

Ответы [ 2 ]

1 голос
/ 21 сентября 2010

После Where у вас есть коллекция IEnumerable, поэтому, если у вас есть только один пользователь, и вы хотите получить к нему доступ - примените Single()

    var v = entities.DbUsers
        .Where( x => users.Contains( x.uid ))
        .Single()
        .Stores;

UPD

    var v = entities.DbUsers
        .Where( x => users.Contains( x.uid ))
        .Select( x => x.Stores );

В этом случае вы получите коллекцию пользователей Stores.

UPD 2 :

    var v = entities.DbUsers
        .Where( x => users.Contains( x.uid ))
        .Select( x => new { Stores = x.Stores, BllStore = new BllStore{a=x.a} );

Если я вас правильно понимаю - это то, что вы ищете. После этого у вас есть коллекция с анонимными объектами, каждый из которых имеет свойство Stores и BllStore.

0 голосов
/ 21 сентября 2010

В том месте, где вы пытаетесь использовать хранилища, вы пытаетесь вызвать его для отфильтрованной последовательности (коллекции) объектов DbUser.Вы должны быть в контексте, который дает вам доступ к одной записи, чтобы использовать это.

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