C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Listクラス内の検索について


(過去ログ 45 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■24145 / inTopicNo.1)  Listクラス内の検索について
  
□投稿者/ Hiro (1回)-(2008/08/28(Thu) 11:28:41)

分類:[VB.NET/VB2005] 

いつも参考にさせていただいています。
独自クラスを用意してそのデータをListクラスへ追加して使用しているのですが
その追加してデータ内のあるキーを指定して検索をする方法があれば教えて下さい。
現在は、For Loop で比較を行い検索を行っています。

'// 独自クラス
Public Class SampleData
    Public ID As String
    Public Code As String
    Public Value As Integer
End Class

Private m_SampleData As New List(Of SampleData)
---------------------------------------------------------------------------
Dim myD as New SampleData
With MyD
    ID = "345"
    Code = "GTHI"
    Value = 0
End With
m_SampleData.Add(myD)

上記のように複数のデータを追加した後にに、例えば「ID」が「123」のValueの値を知りたい時は
For ii as Integer = 0 to m_SampleData.Count - 1
    If m_SampleData(ii).ID = "123" Then
        Console.WiriteLine("Data={0}", m_SampleData.Value)
        Exit For
    End If
Next ii
のようにしています。
この方法より簡単に検索するようなことはできないでしょうか?
お願いいたします。


引用返信 編集キー/
■24147 / inTopicNo.2)  Re[1]: Listクラス内の検索について
□投稿者/ シャノン (594回)-(2008/08/28(Thu) 11:34:33)
No24145 (Hiro さん) に返信
> いつも参考にさせていただいています。
> 独自クラスを用意してそのデータをListクラスへ追加して使用しているのですが
> その追加してデータ内のあるキーを指定して検索をする方法があれば教えて下さい。
> 現在は、For Loop で比較を行い検索を行っています。

List.Find とか、Linq とか。
引用返信 編集キー/
■24170 / inTopicNo.3)  Re[1]: Listクラス内の検索について
□投稿者/ KG (2回)-(2008/08/28(Thu) 17:14:06)
No24145 (Hiro さん) に返信
> いつも参考にさせていただいています。
> 独自クラスを用意してそのデータをListクラスへ追加して使用しているのですが
> その追加してデータ内のあるキーを指定して検索をする方法があれば教えて下さい。
> 現在は、For Loop で比較を行い検索を行っています。

別案ですが、Dictionaryクラスを使ってみるとか。

-------------------------------------------------
  Dim dic As New Dictionary(Of String,SampleData)
  Dim myD as New SampleData
  With myD
      ID = "345"
      Code = "GTHI"
      Value = 0
  End With
  dic.Add(myD.ID,myD)
-------------------------------------------------
あとはDictionaryクラスのTryGetValueメソッドなどを使えばできそうですが。

引用返信 編集キー/
■24172 / inTopicNo.4)  Re[2]: Listクラス内の検索について
□投稿者/ Hiro (2回)-(2008/08/28(Thu) 17:41:06)
FindIndexメソッドを使用して検索キーに対してのインデックスを取得
することができました。シャノン様ありがとうございました。

Private Shared m_strFind As String = "345"   '// 検索コード

Console.WriteLine("FindIndex(AddressOf EndsWithSaurus): {0}", _
    m_SampleData.FindIndex(AddressOf EndsWithIndex))

Private Shared Function EndsWithIndex(ByVal s As SampleData) As Boolean

    If s.ID = m_strFind Then
        Return True
    Else
        Return False
    End If

End Function

■No24170 (KG さん) に返信
> ■No24145 (Hiro さん) に返信
>>いつも参考にさせていただいています。
>>独自クラスを用意してそのデータをListクラスへ追加して使用しているのですが
>>その追加してデータ内のあるキーを指定して検索をする方法があれば教えて下さい。
>>現在は、For Loop で比較を行い検索を行っています。
> 
> 別案ですが、Dictionaryクラスを使ってみるとか。
> 
> -------------------------------------------------
>   Dim dic As New Dictionary(Of String,SampleData)
>   Dim myD as New SampleData
>   With myD
>       ID = "345"
>       Code = "GTHI"
>       Value = 0
>   End With
>   dic.Add(myD.ID,myD)
> -------------------------------------------------
> あとはDictionaryクラスのTryGetValueメソッドなどを使えばできそうですが。

上記の方法も確認してみたいと思います。
ありがとうございます。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -