Boucle à travers IEnumerable<object>
Je suis en utilisant énumérable et de groupe par LINQ to groupe de données à partir d'un DataTable avec 5 colonnes. Maintenant, j'ai besoin d'accéder à toutes les données de la colonne dans le résultat.
EDIT:
private IEnumerable<object> getItemsForDisplay()
{
var result = toDisplay.AsEnumerable()
.GroupBy(x => new
{
Col1 = x.Field<string>("rItem"),
Col2 = x.Field<string>("rMaterial"),
Col3 = x.Field<string>("rSpecs")
})
.Select(g => new
{
Col1 = g.Key.Col1,
Col2 = g.Key.Col2,
Col3 = g.Key.Col3,
Col4 = String.Join(", ", g.Select(row => row.Field<string>("rQuantity"))),
Col5 = String.Join(", ", g.Select(row => row.Field<string>("rOptional"))),
}).ToList();
return result;
}
//In another function
foreach (var item in result)
{
//item.tostring shows this: {"aaa","bbb","ccc","ddd","eee")
//turn it to array string or list to access "aaa".. etc etc
}
- D'où vient retrievedItems viennent? Ne devrait-il pas être le résultat?
- utilisation
item.Col1
,item.Col2
,item.Col3
, ... - Créer une classe au lieu d'utiliser un type anonyme
Vous devez vous connecter pour publier un commentaire.
Le nom de l'propriétés sont
Col1
...Col5
après révision
Vous ne devriez pas passer à d'autres fonctions/retour des objets anonymes (techniquement, vous pouvez, mais vous ne devriez pas). Voir https://stackoverflow.com/a/6625008/613130 et https://stackoverflow.com/a/18189923/613130 . Vous pouvez utiliser
dynamic
si vous voulez vraiment.J'ai une autre solution pour ce problème, j'ai essayé et cela a fonctionné pour moi. J'ai utilisé la réflexion en tant que ci-dessous;