Click here to Skip to main content
Click here to Skip to main content

Tagged as

Go to top

Using LINQ to read delimited text files

, 28 Mar 2010
Rate this:
Please Sign up or sign in to vote.
Did you ever face a situation where you want to read a delimited file (CSV or any similar format) and want to filter the records on the basis of some conditions (by checking some values against columns).For example, let's assume that Data.txt file contains the following...
Did you ever face a situation where you want to read a delimited file (CSV or any similar format) and want to filter the records on the basis of some conditions (by checking some values against columns).
 
For example, let's assume that Data.txt file contains the following records:
 
Name,Age,City
Person1,30,CityA
Person2,20,CityB
Person3,25,CityB
Person4,30,CityA
Person5,27,CityA
 
If we want to find all records which belong to CityA with age >= 30 then we can use LINQ for this purpose:
 
string delimiter = ",;";
List<string> logs = (File.ReadAllLines(@"C:\Data.txt")
    // leave blank lines
    .Where(line => !string.IsNullOrEmpty(line))
    // split line seperated by delimiter
    .Select(line => line.Split(delimiter.ToCharArray(), StringSplitOptions.RemoveEmptyEntries))
    // compare the third column to find all records from CityA
    .Where(values => values[2].Equals("CityA", StringComparison.CurrentCultureIgnoreCase))
    // compare the second column to find all records with age more than or equal to 30
    .Where(values => int.Parse(values[1]) >= 30)
    // join back the splitted values by underscore
    .Select(values => string.Join("_", values))
    // find all unique values
    .Distinct()
    .ToList<string>());// convert to list
 
Hope this will help you out in reading delimited files Smile | :)

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

The Manoj Kumar
Team Leader
India India

Manoj Kumar is a Humble Programmer and a trainer having dozens of trainings, publications and articles to his wallet.

His programming adventures began with Basic at an age of 11. Being a mathematician at core, soon he started looking for some more and moved to assembly language, later to C, C++, VC++ and finally to .Net.

He started his professional career as a VC++ 6 trainer, moved to embedded systems and device driver development, then to complex biological systems and finally moved to pure application development.

He has been teaching and training people for more than 12 years on a wide range of topics including Mathematics, Algorithms, Data Structures, C, C++, VC++, MFC, C#, Design Patterns and now a days he is working extensively with Visual Studio and .Net framework which includes VSX, WPF, Silverlight, WCF, WF, XAML and RIAs.

Awards:

  • Ideablade RIA Service Challenge winner
  • Visual Studio 2010 Extension Contest winner (Best Use of Editor)

Visit my website and blog or drop me a mail.

Feel free to connect with me on Linkedin.

Follow on   Twitter

Comments and Discussions

 
GeneralMy vote of 5 Pinmembernocturns229-Sep-13 12:16 
GeneralRe: My vote of 5 PinmemberThe Manoj Kumar15-Oct-13 17:29 
GeneralRe: My vote of 5 Pinmembernocturns216-Oct-13 11:10 
QuestionLine word‏ Pinmembererummirza30-Jul-13 17:24 
QuestionLine word Pinmembererummirza29-Jul-13 23:24 
AnswerRe: Line word PinmemberThe Manoj Kumar30-Jul-13 6:28 
GeneralRe: Line word Pinmembererummirza10-Aug-13 0:55 
GeneralMy vote of 5 PinmemberCarsten V2.012-Aug-12 4:50 
GeneralRe: My vote of 5 PinmemberThe Manoj Kumar1-Dec-12 20:12 
GeneralRe: My vote of 5 PinmemberCarsten V2.01-Dec-12 21:21 
GeneralReason for my vote of 5 good Pinmembervijay_dahite5-Aug-10 3:17 
GeneralRe: Reason for my vote of 5good PinmemberThe Manoj Kumar1-Dec-12 20:12 
GeneralReason for my vote of 5 good job~ Pinmemberpuyunhong14-Jul-10 21:13 
GeneralRe: Reason for my vote of 5good job~ PinmemberThe Manoj Kumar1-Dec-12 20:12 
Thanks mate.
Regards,
Manoj Kumar
Blog:ManojKumar.me | Twitter:TheManojKumar |
"No me, no life; Know me, know life."


GeneralNicely done! PinmemberRoger50015-Apr-10 13:52 
GeneralRe: Nicely done! PinmemberThe Manoj Kumar16-Apr-10 5:02 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web04 | 2.8.140926.1 | Last Updated 28 Mar 2010
Article Copyright 2010 by The Manoj Kumar
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid