Обновление:
Как и Теодор, предложенный в комментариях , IndexOf
может существенно повлиять на производительность, особенно если у вас большой список.Чтобы не использовать IndexOf
, вы можете создать переменную int
и увеличить ее внутри ForEach
:
int i = 0;
books.ForEach(x => x.bookId = bookIds[i++]);
Исходный ответ:
Если вы хотите назначить первый идентификаторв списке bookIds
для первой книги в списке books
и во втором идентификаторе для второй книги и т. д. вы можете сделать что-то вроде этого: *
books.ForEach(x => x.bookId = bookIds[books.IndexOf(x)]);
Полный пример:
var bookIds = new List<string>() { "1", "2" };
var books = new List<Book>()
{ new Book() { bookName = "Book1" },
new Book() { bookName = "Book2"}
};
books.ForEach(x => x.bookId = bookIds[books.IndexOf(x)]);
Console.WriteLine(books[0].bookName + " has id: " + books[0].bookId);
Console.WriteLine(books[1].bookName + " has id: " + books[1].bookId);
Выход:
Book1 has id: 1
Book2 has id: 2
* Пожалуйстаимейте в виду, что это выдаст ArgumentOutOfRangeException
, если bookIds
имеет меньше элементов, чем books
.