Dynamique Nom de la Colonne dans LinQ
Je vais avoir un Élément de classe.
class Item{
public int Id { get; set; }
public DateTime CreatedDate { get; set; }
public string Name { get; set; }
public string Description { get; set;}
}
Je veux filtrer la liste des éléments basés sur la dynamique de la colonne nom.
Supposons que je veux une liste de Noms, puis Nom de Colonne "Nom" et le résultat sera une liste de noms
Si le nom de colonne est la Description, j'ai besoin de la liste des descriptions.
Comment faire cela avec LinQ?
OriginalL'auteur user1120418 | 2014-07-14
Vous devez vous connecter pour publier un commentaire.
Facile, il suffit de sélectionner la propriété dont vous avez besoin à partir de la liste:
Mise à jour:
Vous aurez besoin d'un peu de réflexion pour ce faire:
De se débarrasser de cette dans une méthode de ré-utilisabilité:
Bien sûr, ce n'est pas de valider si la colonne existe dans l'objet. Donc, il va jeter un
NullReferenceException
quand ça ne marche pas. Elle renvoie unIEnumerable<object>
, de sorte que vous aurez à appelerToString()
sur chaque objet par la suite d'obtenir la valeur ou appelez leToString()
dans la requête droit aprèsGetValue(x)
:Utilisation:
items
doit être de typeList<string>
, n'est-ce pas?Non, la classe est
Item
il devrait donc être une liste de ce type.names
etdescriptions
sera unIEnumerable<string>
.Ouais vous avez raison. Ne sais pas ce que j'ai interprété en vous code - Désolé
Ici, vous avez écrit deux requêtes. Pour récupérer les noms et la deuxième pour les descriptions. J'ai besoin d'une requête qui est généralisée.
vérifier mes mises à jour de réponse.
OriginalL'auteur Abbas