LINQ:条件テーブルで、関連するテーブルで
-
06-09-2019 - |
質問
私はのティッカーの作成とに加入することができますと呼ばれるいくつかのアイテムを持っています。プライベートまたは2:公共彼らが作成されると、彼らは1の範囲を持っています。誰と民間ティッカーによってサブスクライブすることができますパブリック・ティッカーは、所有者の招待でサブスクライブすることができます。
(例:特定の所有者のIDを持つ)私は、ユーザーが作成したティッカー取得するためにLINQを使用したい。いずれかの[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にかなり新しいです。どこが間違っているんだ?
解決
db.Tickers.Where(t =>
// The ticker is public...
(t.ScopeId == 2)
// ...or any of the ticker users is the current user.
|| t.TickerUsers.Any(tu => tu.UserId == currId))
所属していません StackOverflow