Pregunta

Tengo algunos artículos llamados los tickers que puede ser creado y el suscrito.Cuando se crean, tienen un alcance de 1:privado o 2:público.Pública de los tableros pueden ser suscrito por cualquier persona y privada de los tableros pueden ser suscrito por el propietario de la invitación.

Quiero usar LINQ para obtener los tableros creados por un usuario (es decir:con un cierto número de identificación del titular) que [1] son públicas [2] han sido suscritos por el usuario actual.

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

La última línea es incorrecta, pero se puede ver de donde yo estaba tratando de ir con él.Soy bastante nuevo para LINQ así que no estoy completamente de pensar de la manera correcta todavía.A donde voy mal?

¿Fue útil?

Solución

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))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top