次のようなカスタム オブジェクトがあります。
Dim Contacts As New List(Of Contact)
Dim CurrentContact As Contact = New Contact With { _
.Name = "Manolo", _
.Country = "Spain", _
.City = "Valencia"}
Contacts.Add(CurrentContact)
メンバー変数は単なる文字列です:
<Serializable()> _
Public Class Contact
#Region "Member Variables"
Private mId As System.Guid
Private mName As String
Private mCountry As String
Private mCity As String
#End Region
End Class
これで、「詳細」モードが設定され、次のような 3 つの列を持つリストビューができました。
Name Column | Country Column | City Column
------------------------------------------------------------------
(Here goes Item) | (Here goes Subitem 1) | (Here goes Subitem 2)
私の質問、LINQ を使用して目的の列の各値を直接キャストするにはどうすればよいですか? 結果は次のようになります。
Name Column | Country Column | City Column
--------------------------------------------------------
Manolo | Spain | Valencia
Next contact Name | Next contact Country | Next contact City
Next contact Name | Next contact Country | Next contact City
etc...
オブジェクトを「ListViewItem」、「ListviewGroup」、および「ListView.ListViewItemCollection 」としてキャストしようとしましたが、何も機能しませんでした。何か間違ったことをしています。
ListView1.Items.AddRange(Contacts.Select(Function(x) New ListViewGroup(x)).ToArray)
そうでなければ、これは「 'contact' 型の値を ListViewGroup に変換できません」というメッセージをスローします。
ListView1.Items.AddRange(Contacts.Select(Function(x) New ListViewItem(x)).ToArray)