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

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

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

Re[2]: 構造体の項目名でデータ検索したい


(過去ログ 91 を表示中)

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

■54245 / inTopicNo.1)  構造体の項目名でデータ検索したい
  
□投稿者/ pg (1回)-(2010/10/11(Mon) 18:25:04)

分類:[VB.NET/VB2005 以降] 

VB2010

ジェネリックリストに追加した構造体データを、構造体の項目名で検索する方法についてご教授ください。
下記ソースの★★★部分がわかりません。

    Structure KojinInfo
        Public No As String
        Public Name As String
        Public Tel As String
    End Structure

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim kojin As New List(Of KojinInfo)
        Dim data() As String = {"1,伊藤,090-1111-1111", "2,鈴木,090-2222-2222", "3,斉藤,090-3333-3333"}
        Dim kInfo As KojinInfo
        For i = 0 To data.Length - 1
            Dim arr() As String = data(i).Split(","c)
            kInfo.No = arr(0)
            kInfo.Name = arr(1)
            kInfo.Tel = arr(2)
            kojin.Add(kInfo)
        Next

        ★★★「NO=1」で検索し「伊藤」と表示させたい
        ★★★「NAME=鈴木」で検索し「090-2222-2222」と表示させたい

    End Sub

引用返信 編集キー/
■54249 / inTopicNo.2)  Re[1]: 構造体の項目名でデータ検索したい
□投稿者/ Azulean (621回)-(2010/10/11(Mon) 19:17:21)
No54245 (pg さん) に返信
> 下記ソースの★★★部分がわかりません。

(1)kojin でループさせて、No や Name を比較する。
(2)Find メソッドで一致条件を判定するデリゲートを渡す。

(1)は data 配列でやっているようなことを、kojin リストに対してやるだけです。
まずはこちらのやり方を試してみてください。

(2)はちょっと難しくなりますので割愛します。
興味があれば調べてみてください。

引用返信 編集キー/
■54252 / inTopicNo.3)  Re[1]: 構造体の項目名でデータ検索したい
□投稿者/ shu (91回)-(2010/10/11(Mon) 21:55:02)
2010/10/11(Mon) 21:55:30 編集(投稿者)
No54245 (pg さん) に返信

Linq で From, Whereを使った例です。

       '★★★「NO=1」で検索し「伊藤」と表示させたい
        Dim lstTmp = (From a In kojin Where a.No = "1").ToList
        If lstTmp.Count > 0 Then
            Dim itmFind = lstTmp.First
            Label1.Text = itmFind.Name
        End If

        '★★★「NAME=鈴木」で検索し「090-2222-2222」と表示させたい
        Dim lstTmp2 = (From a In kojin Where a.Name = "鈴木").ToList
        If lstTmp2.Count > 0 Then
            Dim itmFind = lstTmp2.First
            Label2.Text = itmFind.Tel
        End If

引用返信 編集キー/
■54255 / inTopicNo.4)  Re[2]: 構造体の項目名でデータ検索したい
□投稿者/ pg (2回)-(2010/10/12(Tue) 00:19:07)
Azuleanさん、shuさん
無事解決しました。
ありがとうございました。

また、AzuleanさんからヒントをいただいたFindメソッドについても何とかできました。
>(2)Find メソッドで一致条件を判定するデリゲートを渡す。

    Dim fNo As KojinInfo = kojin.Find(AddressOf Findno)
    If fNo.No IsNot Nothing Then
        Console.WriteLine("No=1 --> " & fNo.Name)
    End If
    Dim fName As KojinInfo = kojin.Find(AddressOf FindName)
    If fName.Name IsNot Nothing Then
        Console.WriteLine("Name=鈴木 --> " & fName.Tel)
    End If

    Private Function Findno(ByVal kojin As KojinInfo) As Boolean
        If kojin.No = "1" Then
            Return True
        Else
            Return False
        End If
    End Function

    Private Function FindName(ByVal kojin As KojinInfo) As Boolean
        If kojin.Name = "鈴木" Then
            Return True
        Else
            Return False
        End If
    End Function

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


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

このトピックに書きこむ

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

管理者用

- Child Tree -