J'ai quelques articles appelés tickers qui peuvent être créés et souscrits. Quand ils sont créés, ils ont une portée de 1: privé ou 2: public. Les tickers publics peuvent être souscrits par n'importe qui et les tickers privés peuvent être souscrits par l'invitation du propriétaire. Je veux utiliser LINQ pour obtenir les tickers créés par un utilisateur (c'est-à-dire: avec un certain identifiant de propriétaire) qui sont [1] publics [2] ou auxquels l'utilisateur actuel a souscrit.LINQ: Condition dans le tableau et dans la table connexe
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));
}
Cette dernière ligne est incorrecte, mais vous pouvez voir où j'essayais d'aller avec. Je suis assez nouveau à LINQ, donc je ne pense pas encore à la bonne façon. Où vais-je mal?
Ceci est bien mais n'est pas limité par l'ID du propriétaire. Je suppose que je peux juste remplacer db.Tickers avec GetTickersByOwnerAll (ownerId) – Dinah