public class Contact
{
public string Name { get; set; }
public string Fax { get; set; }
public string Email {get; set; }
}
,如果我有一個聯繫人列表,看起來像下面這樣:C#集合結合項目
List<Contact> contactList =
╔═════╦══════╦═════════════╗
║Name ║ Fax ║ Email ║
╠═════╬══════╬═════════════╣
║ a ║ 1 ║ ║
║ b ║ ║ [email protected] ║
║ c ║ 3 ║ [email protected] ║
║ a ║ ║ [email protected] ║
║ b ║ 2 ║ ║
╚═════╩══════╩═════════════╝
我怎麼能結合的條目名稱相同,併產生這樣的結果?
╔═════╦══════╦═════════════╗
║Name ║ Fax ║ Email ║
╠═════╬══════╬═════════════╣
║ a ║ 1 ║ [email protected] ║
║ b ║ 2 ║ [email protected] ║
║ c ║ 3 ║ [email protected] ║
╚═════╩══════╩═════════════╝
這是我試過到目前爲止:
var result = contactList.Select(contact => contact.Name)
.Distinct()
.Select(name => contactList.First(contact => contact.Name == name))
.ToList();
foreach (var contact in contactList)
{
var c = result.First(r => r.Name == contact.Name);
c.Name = string.IsNullOrWhiteSpace(contact.Name) ? c.Name : contact.Name;
c.Fax = string.IsNullOrWhiteSpace(contact.Fax ? c.Fax : contact.Fax;
c.Email = string.IsNullOrWhiteSpace(contact.Email) ? c.Email : contact.Email;
}
有沒有更有效的方法?
什麼是您的重複定義?你期望的結果是什麼? –
你問如何結合像項目?什麼構成「重複」,因爲根據我的定義,沒有重複。 – leigero
在建立'List'時,添加額外的信息可能會更有效。 –