2012-11-28 48 views
0

選擇基於獨特的價值列表的序列我有一類這樣它的名單:如何在物業

public class Person { 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public DateTime Birthday { get; set; } 
} 

// and my list is: 
var persons = new List<Person>(); 
persons.add(/* add for example 20 person here */); 

這些人可能有重複FirstNameLastName。我想選擇所有FirstNameLastName不同的人的子序列。我的意思是我的主鍵(在關係數據庫願景中)是FirstName + LastName

我知道我可以通過迭代列表來做到這一點。但我正在問一個LINQ解決方案。有沒有?我可以通過LINQ選擇指定的子序列嗎?請任何想法嗎?

+0

您可以實現'的IEqualityComparer '的'PersonComparer'類和傳遞的'PersonComparer'的目的是LINQ'鮮明'方法。 –

回答

1

你只想要獨特個人?您可以使用Enumerable.GroupBy,然後計算各組:

var uniquePersons = persons 
        .GroupBy(p => new { p.FirstName, p.LastName }) 
        .Where(g => g.Count() == 1) 
        .Select(g => g.First()); 

這裏有一個演示:http://ideone.com/nsbyyI

+0

感謝幫助,但不是唯一的人。其實我想從只有一個名字和姓氏相同的人中進行選擇。我的意思是刪除更多的人,並保留每一個。 (我的英文太差了:(對不起) –

+0

+1:我可能比你更喜歡你的查詢 – horgh