从列表中获取不同的属性值

问题描述 投票:0回答:3

我试图从包含 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??


            }
        }
c# wpf db2
3个回答
23
投票

使用 LINQ:

var uniqueNames = myContacts.Select(c => c.FullName).Distinct().ToList();

应该可以。如果顺序不重要,您也可以使用:

var names = new HashSet<string>();
while(dr.Read()) {
    ...
    names.Add(contact.FullName);
}

(然后使用

ToList()
/
OrderBy
无论你需要什么)


0
投票

我认为你可以在这里使用不同的方法:

  1. 创建查询不同值的 Sql 查询。

  2. 检查该联系人已在列表中。这种方法假设您的类必须重新定义等性运算符。或者您可以检查该联系人 ID 是否已在列表中。

  3. 如上所述使用 Linq 查询。


0
投票

我们可以这样实现 var uniqueItems = myItemsList.TOList().DistinctBy(x => x.ItemName);

© www.soinside.com 2019 - 2024. All rights reserved.