Linq到CSV按列选择

时间:2011-01-05 23:47:53

标签: linq

如果我有以下(样本)文本文件;

year,2008,2009,2010
income,1000,1500,2000
dividends,100,200,300
net profit,1100,1700,2300
expenses,500,600,500
profit,600,1100,1800

Linq有没有办法只选择2010年的费用?

到目前为止,我有以下内容可以获取所有数据;

        var data = File.ReadAllLines(fileName)
            .Select( 
                l => {
                    var split = l.CsvSplit();
                    return split;
                }
            );

        foreach (var item in data)
            Console.WriteLine("{0}: ${1}", item[0], item[1]);

2 个答案:

答案 0 :(得分:1)

如果您知道它始终是第3个值列,那么

// the expenses row
var query = data.Single(d => d[0] == "expenses");

// the third column
return query[3];

如果你不这样做,那么

var columnNumber = Array.IndexOf(data.First(), "2010");
return query[columnNumber];

答案 1 :(得分:1)

请参阅LINQtoCSV,它是一个为您完成所有这些工作的库。我已经习惯了它,它就像一个魅力。

http://www.codeproject.com/KB/linq/LINQtoCSV.aspx