質問編集履歴

6

a

2015/03/28 08:26

投稿

ranran
ranran

スコア85

test CHANGED
File without changes
test CHANGED
@@ -60,7 +60,7 @@
60
60
 
61
61
  ansRow.Add(lrow)
62
62
 
63
- lcnt = 0
63
+ lcnt = 0
64
64
 
65
65
  End If
66
66
 

5

編集 0

2015/03/28 08:26

投稿

ranran
ranran

スコア85

test CHANGED
File without changes
test CHANGED
@@ -58,7 +58,9 @@
58
58
 
59
59
  '連続情報 連続あり
60
60
 
61
- ansRow.Add(lrow)
61
+ ansRow.Add(lrow)
62
+
63
+ lcnt = 0
62
64
 
63
65
  End If
64
66
 
@@ -152,6 +154,8 @@
152
154
 
153
155
  ansRow.Add(lrow)
154
156
 
157
+ lcnt = 0
158
+
155
159
  End If
156
160
 
157
161
 

4

追記5

2015/03/28 08:24

投稿

ranran
ranran

スコア85

test CHANGED
File without changes
test CHANGED
@@ -175,3 +175,11 @@
175
175
  3、拡張メソッドとする
176
176
 
177
177
  でしょうか?
178
+
179
+
180
+
181
+ 追記2
182
+
183
+ コード挙げておいてなんですが、
184
+
185
+ 思惑通り動いてないようです(^^;

3

追記3

2015/03/28 07:46

投稿

ranran
ranran

スコア85

test CHANGED
File without changes
test CHANGED
@@ -98,7 +98,7 @@
98
98
 
99
99
  ```lang-<ここに言語を入力>
100
100
 
101
- Public Function getNotDupArray(ByVal rows As List(Of DataRow)) As List(Of DataRow)
101
+ Public Function toNotContList(ByVal rows As List(Of DataRow)) As List(Of DataRow)
102
102
 
103
103
 
104
104
 

2

追記2

2015/03/28 07:34

投稿

ranran
ranran

スコア85

test CHANGED
File without changes
test CHANGED
@@ -172,4 +172,6 @@
172
172
 
173
173
  2、gotoを使わないようにする
174
174
 
175
+ 3、拡張メソッドとする
176
+
175
177
  でしょうか?

1

追記1

2015/03/28 07:34

投稿

ranran
ranran

スコア85

test CHANGED
File without changes
test CHANGED
@@ -85,3 +85,91 @@
85
85
  またはこのメソッドでできるよ!
86
86
 
87
87
  等ありましたらご教授ください。
88
+
89
+
90
+
91
+ 追記1:
92
+
93
+ ループの仕方が汚く思いましたので、
94
+
95
+ 連続チェックの回数分でForをまわすよう修正しました。
96
+
97
+
98
+
99
+ ```lang-<ここに言語を入力>
100
+
101
+ Public Function getNotDupArray(ByVal rows As List(Of DataRow)) As List(Of DataRow)
102
+
103
+
104
+
105
+ '2回以上連続しているrowは1つとみなす
106
+
107
+ Dim lcnt As Integer = 0 '連続数
108
+
109
+ Dim lrow As DataRow = Nothing '連続行
110
+
111
+ Dim ansRow As New List(Of DataRow) '結果
112
+
113
+
114
+
115
+ For i As Integer = 0 To rows.Count - 2
116
+
117
+ '連続チェック回数分ループ
118
+
119
+
120
+
121
+ If rows(i).Item("F_Tmp") = rows(i + 1).Item("F_Tmp") Then
122
+
123
+ '連続した場合 連続情報保存
124
+
125
+ lcnt += 1
126
+
127
+ lrow = rows(i)
128
+
129
+
130
+
131
+ '最後の連続チャックの場合、ansRow追加
132
+
133
+ If i = rows.Count - 2 Then GoTo AddRow
134
+
135
+
136
+
137
+ Else
138
+
139
+ Addrow:
140
+
141
+ '連続しなくなった場合 ansRowに追加
142
+
143
+ If lcnt = 0 Then
144
+
145
+ '連続情報 連続無し
146
+
147
+ ansRow.Add(rows(i))
148
+
149
+ Else
150
+
151
+ '連続情報 連続あり
152
+
153
+ ansRow.Add(lrow)
154
+
155
+ End If
156
+
157
+
158
+
159
+ End If
160
+
161
+ Next
162
+
163
+ Return ansRow
164
+
165
+ End Function
166
+
167
+ ```
168
+
169
+ 改善点としては、
170
+
171
+ 1、引数でカラム名を受け取るようにする
172
+
173
+ 2、gotoを使わないようにする
174
+
175
+ でしょうか?