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

chambreur 30 Messages postés mardi 19 août 2008Date d'inscription 15 mai 2014 Dernière intervention - 5 févr. 2014 à 11:16 - Dernière réponse : chambreur 30 Messages postés mardi 19 août 2008Date d'inscription 15 mai 2014 Dernière intervention
- 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 

1 réponse

Répondre au sujet
chambreur 30 Messages postés mardi 19 août 2008Date d'inscription 15 mai 2014 Dernière intervention - 5 févr. 2014 à 14:41
0
Utile
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.