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

Messages postés
30
Date d'inscription
mardi 19 août 2008
Dernière intervention
15 mai 2014
- - Dernière réponse : chambreur
Messages postés
30
Date d'inscription
mardi 19 août 2008
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?
Afficher la suite 

Votre réponse

1 réponse

Messages postés
30
Date d'inscription
mardi 19 août 2008
Dernière intervention
15 mai 2014
0
Merci
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 :-)
Commenter la réponse de chambreur

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.