KySSTweet次に、ソリューションエクスプローラー内のMainPage.xamlを展開し、表示されるMainPage.xaml.vbをダブルクリックしてリスト6のロジックコードを記述します。」プロパティを定義しておきます。PhoneApplicationPage~コード略~ページが読み込まれた時の処理XElement.LoadメソッドでXML文書ファイル(sampleData_Group.xml)を読み込みます。PersonalInfoクラス型の新しいリストであるmyPersonalInfoオブジェクトを生成します。By句を使って、クエリーの結果をグループ化できます。yomiGroup=Groupと指定しています。yomiGroupは任意の変数名で他の名称でも構いません。コード・エディター上で「yomiGroup=」と入力すると、インテリセンスが働くので「Group」を選択します(図6)。by句では並べ替えを指定できます。ここでは「読み」を昇順(Ascending(規定値))で並べ替えています。降順の場合はDescendingを指定します。定義したクエリーのコレクション内を、変数resultを使って反復処理します。反復処理の過程で、yomiGroupという名前で作成されたグループ(result.yomiGroup)のコレクションが取得されます。この中を、再度、反復処理しながら以下の処理を実行します。yomiGroup=Groupで使用した変数です。Eachステートメントを入れ子にすることがポイントです。プロパティに<氏名>、<読み>、<年齢>、<住所>、<勤務先>要素の値を指定します。「区切り」のプロパティには「------------」の文字列を直接指定し、AddメソッドでmyPersonalInfoオブジェクトに追加していきます。再度クエリーを定義します。PersonalInfoクラスの各プロパティに値の追加された、myPersonalInfoオブジェクトのコレクションに対して、「読み」でグループ化します。PersonalInfo型のmyGroupクラス(後述)の中で定義している処理に従って、myYomiとmyItemsに値を指定して、再グループ化します。コード・エディター内で、myYomi:=またはmyItems:=と入力するとインテリセンスが働いて、値が表示されますので、その中から選択できます(図7)。myYomi:=に指定した値がヘッダの「読み」となり、myItems:=に指定した値が「グループの中身」となります。LongListSelectorのItemsSourceに再グループ化したgroupByを指定します。Subデータ型を特定しないジェネリック型のmyGroupクラスを作成します。T)は、コレクションに対する単純な反復処理をサポートする列挙子を公開します。T)と記述すると、自動的に下記の2つコードが追加されます。T)型のItemsプロパティ(グループの中身)を定義しておきます。YomiとItemsプロパティに値を代入します。これで、「読み」とインデックス付きの「読みのグループ一覧」を保持しています。Equalsメソッドをオーバーライドします。グループヘッダの「読み」がクリックされた時、その「読み」に該当する内容が先頭に表示されます。自動的に追加された上記2つのコード内では、Items.GetEnumeratorを戻り値としています。これでグループの中身を、反復処理して取得して返しています。Class図6:コード・エディター上で「yomiGroup=」と入力すると、インテリセンスが働くので「Group」を選択する(クリックで拡大)図7:コード・エディター内で、myYomi:=またはmyItems:=と入力するとインテリセンスが働いて、値が表示される。薬師寺国安(VBプログラマ)と、薬師寺聖(デザイナ、エンジニア)によるコラボレーション・ユニット。HTMLとDirectAnimationの普及を目的として結成。共同開発やユニット名義での執筆活動を行う。XMLおよび.NETに関する著書や連載多数。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。「コンテナ」の概要を知る2020/2/21設計/手法/テスト技術解説データ中心設計(DOA)に基づいたデータモデリング2020/2/20クラウド技術解説Rancherコードリーディング入門(3/3)2020/2/19開発ツールイベントGitHub、エンタープライズ向けのイベントを国内で開催。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。