首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

文本数据处理解决方法

2012-02-25 
文本数据处理求教 , 我想处理一个如下格式的文本文件:a00001,2a00001,-1b00001,1b00001,1获得如下结果:a00

文本数据处理
求教 , 我想处理一个如下格式的文本文件:

a00001,2
a00001,-1
b00001,1
b00001,1

获得如下结果:

a00001,1
b00001,2

即: 最后一个逗号位后面的数字代表数量 , 前面一个字串代表物品 , 按行存储, 我想将同一个物品根据数量汇总在一行...

这个如何实现呢...

[解决办法]

C# code
s = @"a00001,2a00001,-1b00001,1b00001,1";var query = from x in s.Split(new char[] { '\r', '\n' })                       .Select(x => new { id = x.split(',')[0], value = Convert.ToInt32(x.split(',')[1]) })           group x by x.id into g           select new { id = g.Key, value = g.Select(x => x.value).Sum() };foreach (var item in query){    Console.WriteLine(item.id + "," + item.value);}
[解决办法]
C# code
        public static List<String[]> ReadTxt(string filePathName)        {            List<String[]> ls = new List<String[]>();            StreamReader fileReader=new   StreamReader(filePathName);             string strLine="";            while (strLine != null)            {                strLine = fileReader.ReadLine();                if (strLine != null && strLine.Length>0)                {                    ls.Add(strLine.Split(','));                    //Debug.WriteLine(strLine);                }            }            fileReader.Close();            return ls;        }
[解决办法]
string s = @"a00001,2
a00001,-1
b00001,1
b00001,1";
var query = from x in s.Split(new string[] { "\r\n" }, StringSplitOptions.None)
.Select(x => new { id = x.Split(',')[0].Trim(), value = Convert.ToInt32(x.Split(',')[1]) })
group x by x.id into g
select new { id = g.Key, value = g.Select(x => x.value).Sum() }; 
foreach (var item in query) 

Console.WriteLine(item.id + "," + item.value); 
}
[解决办法]
探讨
引用:

s = @"a00001,2
a00001,-1
b00001,1
b00001,1
";
var query = from x in s.Split(new char[] { '\r', '\n' })
.Select(x => new { id = x.split(',')[0], value = Convert.ToI……

热点排行