Linq使用null或string.empty过滤掉行

时间:2013-04-26 13:32:02

标签: c# linq csv

我有一个linq查询,我正在读取CSV的所有行,文件末尾有额外的行,没有数据。我需要过滤掉那些行,以便它只有行数据 我使用以下查询,但它仍然返回8000行,其中只有52个数据。

   var query =
            from c in
                (from line in File.ReadAllLines(excelFile)
                    let transactionRecord = line.Split(',')
                    select new Transaction()
                    {
                        TxnId = transactionRecord[12],

                    })
            where c.TxnTax != string.Empty
            select c;

不确定为什么会发生这种情况? Doe有人有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这将为IEnumerable提供包含至少一列数据的行(string[]

IEnumerable<string[]> data = 
    from line in System.IO.File.ReadAllLines("")
    let lineData = line.Split(',')
    where lineData.Any(cell => !string.IsNullOrEmpty(cell))
    select lineData;

答案 1 :(得分:2)

这有效

var query =
                    from c in
                        (from line in File.ReadAllLines(excelFile)
                            let transactionRecord = line.Split(',')
                            select new Transaction()
                            {
                                TxnId = transactionRecord[12],

                            })
                    where ((string.IsNullOrEmpty(c.TxnId) == false) && (c.TxnId != "Billing Information|Transaction ID"))
                    select c;