Ich versuche, meine Aktivitäten basierend auf Benutzerrollen zu filtern. Der Manager darf nur die Aktivitäten sehen, die die Rolle Manager
enthalten. Siehe unten für weitere Informationen.RavenDb 4: Überprüfen, ob eine Zeichenfolge aus einem Array von Zeichenfolgen in einem anderen Array von Zeichenfolgen vorhanden ist
Daten:
var user = new User
{
Roles = [
"Manager"
]
}
var activities = new List<Activity>
{
new Activity
{
Description = "My First Activity",
Roles = [
"Admin",
"Manager"
]
},
new Activity
{
Description = "My Second Activity",
Roles = [
"Admin"
]
},
new Activity
{
Description = "My Third Activity",
Roles = [
"Manager",
"Client"
]
},
}
Abfrage, die die Aktivität filtert
var filtered = await context.Query<Activity>()
.Where(x => x.Roles.Any(y => user.Roles.Contains(y)))
.ToListAsync();
Erwartetes Ergebnis der gefilterten:
[
{
new Activity
{
Description = "My First Activity",
Roles = [
"Admin",
"Manager"
]
}
new Activity
{
Description = "My Third Activity",
Roles = [
"Manager",
"Client"
]
},
}
]
Fehler von Abfrage
System.InvalidOperationException : Can't extract value from expression of type: Parameter
Ich bekomme einen Fehler, also mache ich offensichtlich etwas falsch. Ist das der richtige Weg oder gibt es etwas Besseres?
Arbeitete wie ein Charme. Vielen Dank! –