Сгруппируйте и сопоставьте список с помощью gRP C Список с помощью LINQ - PullRequest
1 голос
/ 23 апреля 2020

Я работаю с услугой gRP C, и у меня есть список отелей, в которых может случиться так, что будет повторен один и тот же отель, но с разными номерами или предложениями, я хотел бы сгруппировать эти отели с одинаковым идентификатором и добавьте разные комнаты внутри него. Я пытаюсь достичь этого с помощью Linq, но получаю эту ошибку:

Не удается неявно преобразовать тип 'System.Collections.Generi c .IEnumerable' в 'Google.Protobuf.Collections.RepeatedField'

Это блок кода.

    private Grpc.CheckRateResponse BuildGrpcResponseResult(List<Hotels> hotelsList)
    {
        var listResult = hotelsList.GroupBy(h => h.Id)
                 .Select(g => new Grpc.Hotels
                 {
                    Id = g.Key,
                    Name = g.Where(c => c.Id == g.Key).FirstOrDefault().Name,
                    CategoryCode = g.Where(c => c.Id == g.Key).FirstOrDefault().CategoryCode
                    Rooms = g.SelectMany(h => h.Rooms).GroupBy(r => r.RoomId).Select(x => new Grpc.Room
                        {
                            RoomId = x.Key,
                            RoomName = x.Where(l => l.RoomId == x.Key).FirstOrDefault().RoomName,
                            Rates = x.SelectMany(r => r.Rates).Select(c => new Grpc.Rate
                            {
                                RateKey = c.RateKey,
                                RateType = c.RateType,
                                BoardCode = c.BoardCode
                            })
                        })
                 });

        Grpc.CheckRateResponse result = new Grpc.CheckRateResponse();

        result.Hotels.Add(listResult);

        return result;
    }
...