【发布时间】:2009-05-30 14:52:10
【问题描述】:
我有一些名为 tickers 的项目可以创建和订阅。创建它们时,它们的范围为 1:private 或 2:public。任何人都可以订阅公共代码,并且可以通过所有者邀请订阅私人代码。
我想使用 LINQ 获取用户创建的代码(即:具有特定所有者 ID),其中 [1] 是公共的 [2] 已被当前用户订阅。
TickerUser Ticker
========== ======
TickerUserId <-- TickerId
TickerId OwnerId
UserId ScopeId
public IQueryable<Ticker> GetTickersByOwnerAll(int ownerId) {
return from ticker in db.Tickers
where ticker.OwnerId == ownerId
select ticker;
}
/// THIS PART IS INCORRECT -- DO NOT USE
public IQueryable<Ticker> GetTickersByOwnerVisible(int ownerId) {
int currId = CurrentUser.GetCurrentUser().ID;
return GetTickersAll(ownerId)
.Where(t => t.ScopeId == 2)
.Where(t => t.TickerUsers.Where(tu => tu.UserId == currId));
}
最后一行是不正确的,但你可以看到我试图用它去哪里。我对 LINQ 还很陌生,所以我还没有想到正确的方法。我哪里错了?
【问题讨论】:
标签: linq linq-to-sql .net-3.5