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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.24145 の関連記事表示

<< 0 >>
■24145  Listクラス内の検索について
□投稿者/ Hiro -(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
    のようにしています。
    この方法より簡単に検索するようなことはできないでしょうか?
    お願いいたします。

親記事 /過去ログ45より / 関連記事表示
削除チェック/

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

    List.Find とか、Linq とか。
記事No.24145 のレス /過去ログ45より / 関連記事表示
削除チェック/

■24170  Re[1]: Listクラス内の検索について
□投稿者/ KG -(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メソッドなどを使えばできそうですが。
記事No.24145 のレス /過去ログ45より / 関連記事表示
削除チェック/

■24172  Re[2]: Listクラス内の検索について
□投稿者/ Hiro -(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メソッドなどを使えばできそうですが。
    
    上記の方法も確認してみたいと思います。
    ありがとうございます。
記事No.24145 のレス / END /過去ログ45より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -