0

基本上我要实现的功能是将数据集中的每一列数据清楚地分开

Public Shared Function mtdCDsToStr (ByVal pDs As DataSet) As String

Dim sResult As String = " "
Dim sb As New System.Text.StringBuilder
Dim dt As DataTable
Dim dc As DataColumn
Dim dr As DataRow
Dim i As Integer = 0

For Each dt In pDs.Tables
 For Each dr In dt.Rows
  For Each dc In dt.Columns
    sb.Append(dr(i).ToString + "|" + Environment.NewLine )

  Next

  sb.Remove(sb.Length -1, 1)
 Next
Next
sResult = sb.ToString
End Function

所以我的返回结果将类似于

结果 名称1| 姓名2| 姓名3| 姓名4|

| 是我的数据分隔符,我试图删除 | 如果达到了最后一个记录,但我没能做到

预期结果 名称1| 姓名2| 姓名3| 名称4

没有| 在我最后的记录中

4

3 回答 3

0

试试这个

For Each dt In pDs.Tables
 For Each dr In dt.Rows
  For Each dc In dt.Columns
    sb.Append(dc(i).ToString + iif(i=dt.Columns.Count-1,"","|") + Environment.NewLine )
    i += 1
  Next      
 Next
Next
sResult = sb.ToString
于 2013-05-31T08:05:11.527 回答
0

试试这个:

删除 | 和新线。

sb.Remove(sb.Length -1 - Environment.NewLine.Length, Environment.NewLine.Length + 1)

只是为了删除|

    sb.Remove(sb.Length -1 - Environment.NewLine.Length, 1)
于 2013-05-31T08:11:05.777 回答
0

你只需更换

sb.Append(dr(i).ToString + "|" + Environment.NewLine )

 dim j as Integer = 0 // declare this above all the loops

 if j < dt.Columns.Count - 1 Then
     sb.Append(dr(i).ToString + "|" + Environment.NewLine )

我认为这会有所帮助,因为它会检查它是否不是最后一列,然后只有它会执行该语句,否则它不会执行。

试试吧,我希望它会有所帮助.. :)

于 2013-05-31T08:15:07.660 回答