LINQ: Zustand in der Tabelle und in verwandter Tabelle
-
06-09-2019 - |
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?
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