C# Ошибка SelectMany «Невозможно неявно преобразовать тип 'System.Collections.Generi c .List <char>' в 'System.Collections.Generi c .List <List>'» - PullRequest
0 голосов
/ 04 августа 2020

Внутри linq Select У меня есть SelectMany, который выдает ошибку

C# SelectMany error «Невозможно неявно преобразовать тип 'System.Collections.Generic.List<char>' в 'System.Collections.Generic.List<List> '"

List<Hotel> hotelList = reservations
    .GroupBy(i => i.hotelID)
    .Select(c => new Hotel()
    {
        HotelID = c.First().HotelID,
        HotelName = c.First().HotelName,
        HotelAddress1 = c.First().HotelAddress1,
        HotelAddress2 = c.First().HotelAddress2,
        HotelAddress3 = c.First().HotelAddress3,
        HotelCity = c.First().CCCity,
        HotelPostalCode = c.First().CCZip,
        ReservationNumbers = c.SelectMany( i => i.ReservationNumber).Distinct().ToList()

    }).ToList();

SelectMany автоматически преобразует его в IEnumerable<char>, а затем ToList превращает его в List<Char>

i.ReservationNumber имеет тип String, ReservationNumbers имеет тип List<string>, c имеет тип IGrouping<Reservation, int>

Каким будет способ принудительного преобразования в List<string> или как заставить SelectMany возвращать IEnumerable<string>

1 Ответ

3 голосов
/ 04 августа 2020

Если i.ReservationNumber имеет тип String, вам нужно просто написать

ReservationNumbers = c.Select( i => i.ReservationNumber).Distinct().ToList()

SelectMany пытается перебрать элементы ReservationNumber, что, будучи String, является IEnumerable<char>

...