从List获取不同的属性值

时间:2011-01-06 10:03:56

标签: c# wpf db2

我试图从包含FullNames和ID的列表中获取不同的FullNames,然后在listBox控件中显示这些。有一个简单的方法吗?谢谢Ben

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??


            }
        }

2 个答案:

答案 0 :(得分:18)

使用LINQ:

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

应该有效。如果订单不重要,您也可以使用:

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

(然后根据需要使用ToList() / OrderBy

答案 1 :(得分:0)

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

  1. 进行查询不同值的Sql查询。

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

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