0
私はティッカーと呼ばれるいくつかのアイテムを作成し、購読することができます。作成時には、1:プライベートまたは2:パブリックのスコープがあります。公開ティッカーは誰でも購読することができ、プライベートティッカーはオーナーの招待によって購読することができます。LINQ:テーブルと関連テーブルの条件
LINQを使用して、現在のユーザーが[2]が購読しているユーザーによって作成されたテロップを取得します(つまり、特定の所有者IDを持つ)。
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にはかなり新しいので、それはまだ正しい方法とは思えません。どこが間違っていますか?
これはいいですが、オーナーIDによって制限されていません。私はdbTickersをGetTickersByOwnerAll(ownerId)に置き換えることができると思います – Dinah