Frage

Ich habe einige Elemente genannt tickers , die erstellt und abonniert werden kann. Wenn sie erstellt werden, haben sie einen Umfang von 1: privat oder 2: public. Öffentlicher tickers kann von jedermann abonniert werden und privaten Tickern können Privat Einladung abonniert werden.

Ich möchte LINQ verwenden, um die Tickern von einem Benutzer erstellt zu erhalten (zB: mit einem bestimmten Eigentümer-ID)., Die entweder [1] public sind [2] wurden von den aktuellen Benutzer abonniert

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));
}

Das letzte Zeile ist falsch, aber Sie können sehen, wo ich mit ihm zu gehen versuchte. Ich bin ziemlich neu in LINQ so dass ich nicht ganz daran denken die richtige Art und Weise vor. Wo soll ich denn falsch?

War es hilfreich?

Lösung

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))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top