Filtrer par colonne dans un fichier CSV (select) [Résolu]

Signaler
Messages postés
30
Date d'inscription
mardi 19 août 2008
Statut
Membre
Dernière intervention
15 mai 2014
-
Messages postés
30
Date d'inscription
mardi 19 août 2008
Statut
Membre
Dernière intervention
15 mai 2014
-
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

Messages postés
30
Date d'inscription
mardi 19 août 2008
Statut
Membre
Dernière intervention
15 mai 2014

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 :-)