Filtrer par colonne dans un fichier CSV (select)

Résolu
chambreur Messages postés 30 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 15 mai 2014 - 5 févr. 2014 à 11:16
chambreur Messages postés 30 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 15 mai 2014 - 5 févr. 2014 à 14:41
Bonjour,
Je cherche à filtrer des données sur un fichier csv que voici:
chat; pâté; 4 pattes;
chien; croquettes; 4 pattes;
canard; pain; 2 pattes;
poule; mais; 2 pattes;
lapin; carotte; 4 pattes;

Pour cela, je fais une requête via linq
string cheminCSV = System.IO.Path.GetFullPath(@"..\..\fichier.CSV");
var lecture = File.ReadAllLines(cheminCSV);
var AccountItems = from line in File.ReadAllLines(cheminCSV).Skip(1)
                               from line in lecture
                               let columns = line.Split(';')
                               where columns[2] == "2 pattes"
                               select (columns[0]);

Ce code qui fonctionne m'affiche canard et poule.
Maintenant je souhaiterais rajouter la colonne de la nourriture. mais il ne me semble pas possible de choisir 2 colonnes via "select", le code
string cheminCSV = System.IO.Path.GetFullPath(@"..\..\fichier.CSV");
var lecture = File.ReadAllLines(cheminCSV);
var AccountItems = from line in File.ReadAllLines(cheminCSV).Skip(1)
                               from line in lecture
                               let columns = line.Split(';')
                               where columns[2] == "2 pattes"
                               select (columns[0], columns[1] );

select (columns[0], columns[1] ); ne fonctionne pas. Une idée?

1 réponse

chambreur Messages postés 30 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 15 mai 2014
5 févr. 2014 à 14:41
C'est bon, j'ai réussie à trouver.
Il faut passer par une classe interne (anonyme)

string cheminCSV = System.IO.Path.GetFullPath(@"..\..\fichier.CSV");
var lecture = File.ReadAllLines(cheminCSV);
var AccountItems = from line in File.ReadAllLines(cheminCSV).Skip(1)
                               from line in lecture
                               let columns = line.Split(';')
                               where columns[2] == "2 pattes"
                               select new { Nom = columns[0], Nourriture = columns[1] };


En espérant que ça puisse aider :-)
0