开发者

Reading Text file with Linq with 2 patterns

开发者 https://www.devze.com 2023-03-22 19:18 出处:网络
I need to开发者_开发知识库 read a text file like this MyItemName = Description @ MoreInfo Now I need to convert this 3 fields in to a table. using the \'=\' and \'@\' as pattern.Just splitting on

I need to开发者_开发知识库 read a text file like this

MyItemName = Description @ MoreInfo

Now I need to convert this 3 fields in to a table. using the '=' and '@' as pattern.


Just splitting on = and @ - this returns and IEnumerable of an anonymous class with the properties you are interested in:

var items = File.ReadAllLines(fileName)
                .Skip(1) //Skip header
                .Where( line => !string.IsNullOrWhiteSpace(line))
                .Select(line =>
                {
                    var columns = line.Split('=', '@');
                    return new
                    {
                        ItemName = columns[0].Trim(),
                        Description = columns[1].Trim(),
                        MoreInfo = columns[2].Trim()
                    };
                });

This approach would require the separator tokens to be used as separators exclusively - if they do occur in any of the fields, this will mess up everything and void this approach.


if you really want to use linq for it... It doesn't look very nice and it doesn't create a table, but you get the point:

from line in File.ReadAllLines(filename)
let eqPos = line.IndexOf('=')
let atPos = line.IndexOf('@')
select new { 
    Name = line.Substring(0, eqPos).Trim(), 
    Desc = line.Substring(eqPos + 1, atPos - (eqPos + 1)).Trim(), 
    Info = line.Substring(atPos + 1).Trim()
}
0

精彩评论

暂无评论...
验证码 换一张
取 消