我有一个像这样的自定义对象:
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
现在我有一个 Listview ,其中设置了“详细信息”模式,并且有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 ”和“< strong> ListView.ListViewItemCollection “但没有任何效果,我做错了,例外情况说”类型'联系人'的值无法转换为字符串 “:
ListView1.Items.AddRange(Contacts.Select(Function(x) New ListViewGroup(x)).ToArray)
这个别人抛出一个“类型'联系'的值'无法转换为ListViewGroup ”
ListView1.Items.AddRange(Contacts.Select(Function(x) New ListViewItem(x)).ToArray)
答案 0 :(得分:1)
以下是如何操作,你必须将一个字符串数组数组传递给AddRange函数:
ListView1.Items.AddRange(Contacts.Select(Function(listElement) new ListViewItem(new string() { listElement.Name, listElement.Country, listElement.City })).ToArray())
不确定哪个没有测试,我现在无法测试。