2009-11-20 4 views
0

J'ai une classe MyObj et une collection IEnumerable. Certaines des colonnes sont entièrement vides (c'est-à-dire == NULL) sur toutes les lignes et je souhaite donc créer un IEnumerable <> des membres de MyObj qui contiennent une valeur non nulle.LINQ à IEnumerable <MyObj>

Si je pouvais prédire les membres de MyObj qui seraient d'intérêt que je ferais quelque chose comme:

var part = 
    from entry in iList 
    select new {entry.a, entry.c, entry.s}; 

... mais je ne sais pas que les membres de MyObj Je suis intéressé à temps de conception - Je sais seulement que lors de l'exécution.

Comment puis-je construire ma liste ??

Merci,

Tamim Sadikali.

+1

Huh? Qu'essayez-vous de faire. Ne semble pas avoir de sens ... –

Répondre

0

Votre question n'a pas de sens.

Vous essayez de créer un type dont les membres ne sont connus qu'au moment de l'exécution.
Que feriez-vous avec les résultats?
Vous ne pouvez pas accéder aux propriétés des objets de résultat, car ils peuvent ne pas exister.

Si vous souhaitez afficher les données dans une grille et que vous ne souhaitez pas afficher les colonnes entièrement nuls, vous devez lier la collection d'origine à la grille, puis masquer certaines des colonnes de la grille.

0

Attendez la publication de VS2010, C# 4.0 avec son type «dynamique» pour résoudre votre problème. (Ou peut-être vous aider à vous tirer dans le pied).

+0

Le mot-clé 'dynamic' ne va pas aider ici; la question n'a aucun sens. – SLaks

+0

Mais MethodBags devrait? – nothrow

0

Si vous faites cela pour l'interface utilisateur, mieux masquer les colonnes qui contiennent tous les nulls. Pour DataGridView dans WinForms, cela peut ressembler à ceci:

foreach (DataGridViewColumn column in dataGridView.Columns) 
    if (dataGridView1.Rows.Cast<DataGridViewRow>().All(r => r.Cells[column.Name].Value == null)) 
     column.Visible = false; 
Questions connexes