【问题标题】:C# SelectMany error " Cannot Implicitly convert type 'System.Collections.Generic.List<char>' to 'System.Collections.Generic.List<List>' "C# SelectMany 错误“无法将类型 'System.Collections.Generic.List<char>' 隐式转换为 'System.Collections.Generic.List<List>'”
【发布时间】:2020-11-24 08:07:33
【问题描述】:

在 linq Select 内部,我有一个 SelectMany,它正在引发错误

C# SelectMany 错误“无法隐式转换类型 'System.Collections.Generic.List&lt;char&gt;' 到 'System.Collections.Generic.List&lt;List&gt;' "

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&lt;char&gt;,然后ToList 将其转换为List&lt;Char&gt;

i.ReservationNumberString 类型,ReservationNumbersList&lt;string&gt; 类型,cIGrouping&lt;Reservation, int&gt; 类型

有什么方法可以强制转换为List&lt;string&gt; 或如何使SelectMany 返回IEnumerable&lt;string&gt;

【问题讨论】:

  • 如果ReservationNumber 是一个字符串,那么SelectMany( i =&gt; i.ReservationNumber) 会选择该字符串中的单个字符并将它们合并到所有预留中的单个流中。这是你想要的,还是你的意思是.Select( i =&gt; i.ReservationNumber)
  • 为什么是SelectMany?我相信你只想要.Select

标签: c# list linq types ienumerable


【解决方案1】:

如果i.ReservationNumber的类型是String,你需要简单地写

ReservationNumbers = c.Select( i =&gt; i.ReservationNumber).Distinct().ToList()

SelectMany 尝试遍历ReservationNumber 的元素,其中StringIEnumerable&lt;char&gt;

【讨论】:

  • 是的,我想就是这样,我不太清楚为什么我认为我需要 SelectMany,接受问题的答案有 10 分钟的时间限制,所以我将其标记为正确时间一到就回复
  • @FarisKapo 我相信你写“SelectMany”是因为你想......好吧,选择许多预订号码:) 作为一个单独的问题,为什么酒店本身不是一个实体?使用 Reservations 作为导航属性?
  • 我需要一个酒店列表来传递到一个更大的付款对象中,在一次付款将不同酒店的多个预订分组的情况下,这正是我制作对象的方式。那里肯定有进一步改进的空间
猜你喜欢
  • 2020-06-16
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-08
相关资源
最近更新 更多