我试图从包含 FullNames 和 ID 的列表中获取不同的 FullNames,然后将它们显示在列表框控件中。有简单的方法吗?谢谢本
using (DB2DataReader dr = command.ExecuteReader())
{
while (dr.Read())
{
Contact contact = new Contact();
contact.ContactID = Convert.ToInt32(dr["CONTACT_ID"]);
contact.FullName= dr["FULL_NAME"].ToString();
myContacts.Add(contact);
//contactsListBox.ItemsSource = myContacts.Distinct FullName??
}
}
使用 LINQ:
var uniqueNames = myContacts.Select(c => c.FullName).Distinct().ToList();
应该可以。如果顺序不重要,您也可以使用:
var names = new HashSet<string>();
while(dr.Read()) {
...
names.Add(contact.FullName);
}
(然后使用
ToList()
/ OrderBy
无论你需要什么)
我认为你可以在这里使用不同的方法:
创建查询不同值的 Sql 查询。
检查该联系人已在列表中。这种方法假设您的类必须重新定义等性运算符。或者您可以检查该联系人 ID 是否已在列表中。
如上所述使用 Linq 查询。
我们可以这样实现 var uniqueItems = myItemsList.TOList().DistinctBy(x => x.ItemName);