Linq查询Where语句后不返回关系数据

时间:2010-09-21 03:51:39

标签: c# .net linq entity-framework

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???
    }
}

在这种情况下,Stores是一个导航属性......我需要能够在这个场景中为我的朋友访问商店对象。

2 个答案:

答案 0 :(得分:1)

Where IEnumerable收集Single()之后,如果您只有一位用户并想要访问它,请应用 var v = entities.DbUsers .Where( x => users.Contains( x.uid )) .Single() .Stores;

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

<强> UPD

Stores

在这种情况下,您将获得用户“ var v = entities.DbUsers .Where( x => users.Contains( x.uid )) .Select( x => new { Stores = x.Stores, BllStore = new BllStore{a=x.a} );

的集合

UPD 2

Stores

如果我理解正确 - 那就是你要找的东西。在此之后,您将拥有包含匿名对象的集合,每个对象都具有BllStore和{{1}}属性。

答案 1 :(得分:0)

在您尝试使用Stores的位置,您尝试在DbUser对象的过滤序列(集合)上调用它。您需要处于允许您访问单个记录的上下文中。