質問

私はのティッカーの作成とに加入することができますと呼ばれるいくつかのアイテムを持っています。プライベートまたは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))
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top