2013-03-11 50 views
1

說我有Person對象的集合 -LINQ確定在不同的集合存在一個集合中的對象上的屬性

public class Person 
{ 
    public string Firstname { get; set; } 
    public string Surname { get; set; } 
} 

現在讓我們說我有一個不同的集合,拿着家庭的姓氏我邀請參加我的派對 -

var guestlist = new List<string> {"Stark", "Wayne"}; 

如何使用LINQ(最好是蘭巴爲主,但這並不重要太多),只拉出斯塔克或韋恩家族的成員?即。我想以另一個(第三)集合結束,而不僅僅是表明我的第一個集合包含韋恩或斯塔克家族成員。

回答

3

試試這個:

var invited = persons.Where(p => guestlist.Contains(p.Surname)); 
1

我想試試這個:

var peopleList = GetPeopleList(); 
var guestList = new List<string> {"Stark", "Wayne"}; 
var matchList = peopleList.Where(o => guestList.Contains(o)); 
1
var result = people.Where(x => guestlist.Contains(x.Surname)); 
2

此操作,從概念上講,是一個連接。它是從兩個不同的集合中「匹配」的對象。

var query = from person in people 
    join name in guestlist 
    on person.Surname equals name 
    select person; 

注意,所有涉及對人的列表中每個項目的名稱列表上使用Contains其他解決方案將工作當兩個集合的規模都很小,但解決方案不能很好地因爲您被迫爲每個項目進行線性搜索。正確實施(LINQ確實)的聯合會將訪客列表放入可更高效搜索的集合中。

相關問題