Linq rejoindre iquery, comment utiliser defaultifempty
J'ai écrit un linq requête de jointure et je voudrais prendre les valeurs, si l'un d'entre eux sont vides...
Code:
var Details =
UnitOfWork.FlightDetails
.Query()
.Join
(
PassengersDetails,
x => x.Flightno,
y => y.FlightNo,
(x, y) => new
{
y.PassengerId,
y.classType,
x.Flightno,
x.FlightName,
}
);
Je voudrais utiliser quelque chose comme..
"Above query".DefaultIfEmpty
(
new
{
y.PassengerId,
y.classType,
string.Empty,
string.Empty
}
);
FlightDetails
est Idatarepository
type sur une classe et PassengerDetails
est IQueryable
local de la variable de résultat. Comment puis-je obtenir de résultat avec PassengerId
et Classtype sans flightno
et flightname
inclus dans les résultats d'ensemble?
- Je ne suis pas sûr si
DefaultIfEmpty()
travaillera avec les méthodes anonymes. Essayez de définir une classe et en les utilisant. - Vous êtes à la recherche pour la syntaxe d'une "Jointure Externe Gauche" qui a été répondu à d'autres questions. Voici le top un pour la Méthode/Lambda syntaxe LINQ: stackoverflow.com/questions/584820/...
Vous devez vous connecter pour publier un commentaire.
Fondamentalement, vous voulez faire une jointure externe gauche. La façon dont vous êtes actuellement à l'aide de la DefaultIfEmpty méthode est que si l'ensemble de la liste est vide, vous ne fournir qu'une seule entrée par défaut.
Vous devriez vous joindre avec
PassengerDetails
et pour chaque passager détails de la liste d'appel par défaut si ce paramètre est vide. C'est l'équivalent d'une jointure externe gauche et il va quelque chose comme ceci: