Переставить c# список объектов, когда один объект дубликатами
У меня есть список в C# , определенный следующим образом:
public class Author { public string Name { get; set; } public string Book { get; set; } public string Age { get; set; } public string Address { get; set; } } List<Author> originalAuthorList = new List<Author> { new Author{ Name = "Bob", Age = "30", Address = "123 Main St.", Book = "Bob's First Book", }, new Author{ Name = "Dan", Age = "32", Address = "456 main St.", Book = "Dan's First Book" }, new Author{ Name = "Dan", Age = "32", Address = "456 main St.", Book = "Dan's Second Book" }, new Author{ Name = "Tom", Age = "34", Address = "789 main St.", Book = "Tom's First Book" } };
Как я могу изменить список, чтобы он выглядел так:
List<Author> newAuthorList = new List<Author> { new Author{ Name = "Bob", Age = "30", Address = "123 Main St.", Book = "Bob's First Book" }, new Author{ Name = "Dan", Age = "32", Address = "456 Main St.", Book = "Dan's First Book, Dan's Second Book" }, new Author{ Name = "Tom", Age = "34", Address = "789 Main St.", Book = "Tom's First Book" } };
Что я уже пробовал:
Я знаю, что если бы у меня было только 2 поля, например, имя и книга, я мог бы сделать это:
List<Author> newAuthorList = originalAuthorList .GroupBy( a => a.Name, // Group by name a => a.Book) // Select the book as the element .Select(g => new Author { Name = g.Key, Book = string.Join(", ", g) // Join the books together }) .ToList();
Но как бы я включил все 4 поля в новый список?
BillWoodruff
если у вас есть контроль над структурой класса Author и форматом данных, используемым для создания экземпляров этого класса: если вы можете изменить 'Books from string to List<string> :
Я поделюсь с тобой кое-каким кодом ... по вашему запросу