Disons que j'ai une classe PersonSummary, qui combine les propriétés (colonnes) de 2 tables de base de données Person et Address (avec une clé étrangère de Person), ainsi un PersonSummary a un prénom, un état et un zip.Sélection dynamique dans LINQ
La création de PersonSummary pourrait être dans une clause select avec (personne, adresse => new PersonSummary {personne, adresse})
Ma couche d'accès aux données n'a pas connaissance de PersonSummary, donc j'aimerais ajoutez la clause select à un niveau supérieur et ne construisez que le from, où, etc. à un niveau inférieur, pour sélectionner des lignes à partir de la personne et de l'adresse en fonction de différents critères, par exemple: avoir des méthodes comme GetFemales() ou GetPeopleInAState().
Des recommandations sur comment faire cela? Est-ce que mes fonctions d'accès aux données renvoient des expressions et la méthode de niveau supérieur se contente d'une clause Select?
Signatures/types de retour les plus appréciés.
merci, c'est un bon début. Maintenant, est-ce que je peux encore scinder le GetPersonQuery() afin que je puisse avoir le from et les jointures dans la couche de données et la sélection/projection dans la couche de gestion? Une façon consiste à définir une entité PersonAddress dans la couche de données qui aura la personne et l'adresse, mais je voudrais éviter cela. Ainsi, par exemple, Écrire une méthode PeopleWithAddresses() (je ne sais pas quel type de retour ce serait), et avoir var marriedFemales = PeopleWithAddresses(). Femelles(). Où (f => f.IsMarried) .Sélectionner new {Person. LastName, Address.State)} ou simplement .Select Person.Age –
Vous pouvez facilement le faire. Je vais mettre à jour la réponse avec un autre échantillon. –