好像你可能想重構外部列表有點出類。事情是這樣的:
public class Genre
{
public string Name { get; set; }
public List<Album> Albums { get; set; }
}
public class Album
{
public string Genre { get; set; }
public string Name { get; set; }
}
之後,你就可以創建一個比較器(簡體)
public class GenreComarer : IEqualityComparer<Genre>
{
public bool Equals(Genre x, Genre y)
{
return x.Name.Equals(y.Name);
}
public int GetHashCode(Genre obj)
{
return obj.Name.GetHashCode();
}
}
public class AlbumComarer : IEqualityComparer<Album>
{
public bool Equals(Album x, Album y)
{
return x.Name.Equals(y.Name);
}
public int GetHashCode(Album obj)
{
return obj.Name.GetHashCode();
}
}
然後,它是一個簡單的加入 - 在缺少流派加回。
List<Genre> unified = list1.Join(list2,
e => e.Name,
e => e.Name,
(genre1, genre2) => new Genre
{
Name = genre1.Name,
Albums = genre1.Albums.Union(genre2.Albums, new AlbumComarer()).ToList()
}
).ToList();
unified.AddRange(list2.Except(list1, new GenreComarer()));
unified.AddRange(list1.Except(list2, new GenreComarer()));
http://stackoverflow.com/questions/13505672/simplest-way-to-form-a-union-of-two-lists將有助於 – Miller
的關鍵是什麼? '名稱'或'流派'? – itsme86
列表的索引不是鍵......你必須解釋你想如何匹配它們才能編寫有用的代碼。 – evanmcdonnal