【LINQ】CSVをパースして特定の条件に一致する要素のみ抽出する
LINQを使うことで、CSVのある項目の値が条件に合致する要素を抽出するような処理を簡単に書くことができる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
public static void Main() { //CSVをパースしてインスタンスを生成 /*sample.csv A,100 B,200 A,300*/ var lines = File.ReadLines(@".\sample.csv"); List<Sample> SampleList = new List<Sample>(); foreach (var line in lines) { var splitted = line.Split(','); SampleList.Add(new Sample{ Kind = splitted[0], Value = int.Parse(splitted[1]) }); } //LINQで特定の条件に該当する要素のみ取り出す。 var kindAList = SampleList.Where(s => s.Kind == "A"); //kind = A の要素を抽出 foreach (var k in kindAList) { Console.WriteLine($"Kind = {k.Kind}, Value = {k.Value}"); } /*出力結果 Kind = A, Value = 100 Kind = A, Value = 300 */ } //CSV用クラス public class Sample { public string Kind { get; set; } public int Value { get; set; } } |