2012-09-05 54 views
2

爲了簡單起見,我有這個類:如何創建這個lambda表達式?

public class Contact 
{ 
    public string Name { get; set; } 
    public string[] Emails { get; set; } 
} 

我的聯繫人集合= IEnumerable<Contact>

我需要找到一個集合中具有的所有聯繫人,讓我們說文本「XXX」在他們的電子郵件地址(他們可能有多個電子郵件)。

類似的東西並不當然工作:

var found = contacts.Where(c => c.Emails.Where(e => e.Contains("xxx"))); 

我想知道如何使用lambda表達式來建立這樣的查詢?

謝謝。

回答

4

使用Any,而不是Where在內部表達:

var found = contacts.Where(c => c.Emails.Any(e => e.Contains("xxx"))); 
+0

就是這樣。非常感謝。 – monstro

0

試試這個

var found = contacts.Where(c => c.Emails.Where(e => e.Contains("xxx")).Count() > 0); 

這將根據指定的郵件條件返回所有聯繫人。

祝您好運!

相關問題