Ich habe zwei separate Tabellen in meiner Lösung: Tickets und UsersInRoles. Jedes Ticket ist mit einem Techniker verbunden, der eine dritte Tabelle betrachtet: Benutzer. Eine Benutzerrolle wird jedoch nicht in der Benutzertabelle gespeichert. Es wird in der UsersInRoles-Tabelle gespeichert. Jetzt muss ich alle Tickets von Technikern filtern, die eine Rolle von New Media haben. Ich habe gesucht und das sind zwei verschiedene Ansätze, die ich habe und keiner arbeitet.Linq Filter-Modell von einer anderen Tabelle
Erster Ansatz:
var NewMediaIds = db.usersInRoles.Select(nm => nm.RoleId == new Guid(Properties.Settings.Default.NewMediaID)).ToList();
model = model.Where(t => NewMediaIds.Contains(t.TechnicianId));
und ich bekommen diese Fehlermeldung:
Error 2 Argument 1: cannot convert from 'System.Guid' to 'bool' C:\Dev\HelpDesk\HelpDesk.WebUI\Controllers\TicketController.cs 561 67 HelpDesk.WebUI
Error 1 The best overloaded method match for 'System.Collections.Generic.List.Contains(bool)' has some invalid arguments C:\Dev\HelpDesk\HelpDesk.WebUI\Controllers\TicketController.cs 561 46 HelpDesk.WebUI
Zweiten Ansatz:
model = model.Where(t => t.TechnicianId == db.usersInRoles.Where(u => u.RoleId == new Guid(Properties.Settings.Default.NewMediaID)).UserId);
und ich bekomme diese Fehlermeldung:
InError 3 'System.Linq.IQueryable' does not contain a definition for 'UserId' and no extension method 'UserId' accepting a first argument of type 'System.Linq.IQueryable' could be found (are you missing a using directive or an assembly reference?) C:\Dev\HelpDesk\HelpDesk.WebUI\Controllers\TicketController.cs 563 153 HelpDesk.WebUI
Fenrir, danke für die Hilfe, aber ich bekomme immer noch den gleichen Fehler damit. – djblois
Auf einen zweiten Gedanken. Ich vermute 'Modell' ist eine Liste oder IQueryable. Also funktioniert First nicht. – Fenrir88
Navas Antwort scheint wie das zu sein, was ich mit meiner Antwort erreichen wollte, aber ich vermasselte es genau zu verstehen, was die Variablen enthielten. Ich denke, dass man arbeiten sollte. – Fenrir88