咨询VB读文本文件,文本文件有N行,3列。想得到1、2列相同时。3列的值求和

ktghyang 2014-11-02 02:43:31
如:
P01, A ,2
P01, A ,3
P01, B ,1
P01, B ,4
P02, A ,6
P02, B ,7
P02,C ,2
P02,C ,1

想得到:
1,2列相同时,3列的值求和 ,如:第1,2行 2+3,第3,4行 1+4,第5行 6,第6行 7,第7,8行 2+1
...全文
255 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
或者这样写更容易理解
Imports System.IO

Module Module1

    Sub Main()
        Dim result = From ln In File.ReadAllLines("data.txt") _
                     Let datas = ln.Split(","c)
                     Let key = datas(0).Trim + "," + datas(1).Trim
                     Group datas By key = key Into g = Group _
                     Select New With {.key = key, .Sum = g.Sum(Function(x) Integer.Parse(x(2)))}
        For Each r In result
            Console.WriteLine("{0} = {1}", r.key, r.Sum)
        Next
        Console.WriteLine("....press any key")
        Console.ReadKey()
    End Sub

End Module
  • 打赏
  • 举报
回复
很简单,这样写整个程序
Imports System.IO

Module Module1

    Sub Main()
        Dim result = From ln In File.ReadAllLines("data.txt") _
                     Let datas = ln.Split(","c)
                     Group datas By key = New With {.A = datas(0), .B = datas(1)} Into g = Group _
                     Select New With {.key = key, .Sum = g.Sum(Function(x) Integer.Parse(x(2)))}
        For Each r In result
            Console.WriteLine("{0} = {1}", r.key.A + "," + r.key.B, r.Sum)
        Next
        Console.WriteLine("....press any key")
        Console.ReadKey()
    End Sub

End Module
  • 打赏
  • 举报
回复
边读边计算的如果用计数器则可以指定读取第几行内容第一例

        Dim 文件路径 As String = System.Environment.CurrentDirectory + "\新建文本文档.txt"
        Dim 内容 As New List(Of String), 暂存 As String = ",,1", 计算 As String()
        If New FileInfo(文件路径).Exists Then
            Dim 打开 As New FileStream(文件路径, FileMode.Open)
            Dim 读取 As New StreamReader(打开)
            Dim 判断 = 0
            While (读取.EndOfStream <> True)
                Dim 取值 = 读取.ReadLine()
                判断 += 1
                If (暂存.Split(",")(0) <> 取值.Split(",")(0)) Or (暂存.Split(",")(1) <> 取值.Split(",")(1)) Then
                    If 判断 > 1 Then
                        内容.Add(暂存)
                    End If
                    暂存 = 取值
                Else
                    计算 = 取值.Split(",")
                    计算(2) = (Int16.Parse(计算(2)) + Int16.Parse(暂存.Split(",")(2))).ToString
                    内容.Add(String.Join(",", 计算))
                    判断 = 0
                End If
            End While
        End If

16,549

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧