"System.InvalidOperationException: Linq The source contains no DataRows."
ソースには、DataRow が含まれていません。
コーディング中にエラーは出ないのですが,デバッグを始めると状況によってうまくいったりいかなかったりです。
もういちどよくエラーメッセージの意味を考えた結果,Linqで抽出した結果が0だったのが問題だったと分かりました。
Private Sub LinqToDataSet()
Dim dt1 As New DataTable
dt1.Columns.Add("Key")
dt1.Columns.Add("Value")
For i = 1 To 10
Dim r As DataRow = dt1.NewRow
r("Key") = "Key-" & i.ToString("00")
r("Value") = "Value-" & i.ToString("00")
dt1.Rows.Add(r)
Next
Dim searchKey As String = "Key-99"
Dim query = dt1.AsEnumerable.Where(Function(el As DataRow) el("Key") = searchKey)
SetDataRow(query.CopyToDataTable.Rows) 'ここでエラー発生。
End Sub
Private Sub SetDataRow(ByVal rows As DataRowCollection)
For Each r In rows
Debug.WriteLine(r("Key") & "|" & r("Value"))
Next
End Sub
というわけで,結果の数を確認して処理するようにしました。
If query.Count > 0 Then SetDataRow(query.CopyToDataTable.Rows)
単純なことで手間取ってしまい,少々残念です。
0 件のコメント:
コメントを投稿