Il serait tout aussi simple que
var messages = context.ImportantMessages.Where(x => x.ImportantMessageUsers.Count() == 0);
EDIT
Je pense J'ai bien compris le problème, vous devez obtenir tous les messages de la table ImportantMessages sans aucun w dans la table ImportantMessageUsers, qui est connectée avec une clé étrangère ImportantMessagesUsers.imuImpID = ImportantMessages.impID. Veuillez vérifier si vous avez une clé étrangère entre ces tables, puis supprimez ces tables du concepteur de contexte Linq et ajoutez-les à nouveau - la clé étrangère doit être visible entre elles créant ainsi des propriétés telles que ImportantMessages.ImportantMessageUsers qui est comme IEnumerable de ImportantMessageUser de type permettant d'utiliser des expressions comme x.ImportantMessageUsers.Count() == 0.
EDIT2
Lorsque l'utilisateur Id doit être filtrée, cette expression lambda devrait faire l'affaire:
var messages = context.ImportantMessages.Where(x => x.ImportantMessageUsers.Where(y => y.imuUserID == 6).Count() == 0);
L'utilisation de lambda sur la notation LINQ est seulement une question de préférence, mais quand plusieurs jointures ne sont pas nécessaires, lambda est généralement plus intuitif à utiliser.
Comment cela fonctionne-t-il? Aucun critère d'utilisateur ajouté? – Malcolm
Je ne pense pas que vous comprenez la question. – Malcolm
Je pense que cette réponse est correcte ... Elle renvoie toutes les lignes dans leur contexte.ImportantMessages que le nombre de lignes liées dans importantMessageUsers est 0. Mais cela ne fonctionne que s'il existe une clé étrangère de importantMessageUsers à importantMessages. (vous devriez avoir ce FK) – Jonathan