2014-03-04 36 views
5

名單我有這樣的地圖列表:排序地圖在達特

var associations = [{'name': 'EG', 'description': 'Evil Genius'}, 
        {'name': 'NaVi', 'description': 'Natus Vincere'}]; 

var members = [ 
{'associationName': 'EG', 'firstName': 'Bob', 'lastName': 'Dylan', 'email': '[email protected]'}, 
{'associationName': 'NaVi', 'firstName': 'John', 'lastName': 'Malkovich', 'email': '[email protected]'}, 
{'associationName': 'EG', 'firstName': 'Charles', 'lastName': 'Darwin', 'email': '[email protected]'} 
]; 

我想通過寫會按字母順序姓氏第一排序成員列表中選擇一個代碼,然後名字。此外,我希望能夠找到姓氏以指定字母開頭的成員。例如,用D,我們會得到鮑勃迪倫和查爾斯達爾文。我可以使用單個地圖或單個列表進行管理,但組合地圖列表會使其更加困難。

感謝您的幫助。

+1

什麼是'associations'名單? –

+0

@GünterZöchbauer它爲協會。一到多。關鍵字是:「關聯」表中的「名稱」和「成員」表中的「關聯名稱」。 – mezoni

回答

8

排序:

members.sort((m1, m2) { 
    var r = m1["lastName"].compareTo(m2["lastName"]); 
    if (r != 0) return r; 
    return m1["firstName"].compareTo(m2["firstName"]); 
}); 

要過濾:

members.where((m) => m['lastName'].startsWith('D'));