代码之家  ›  专栏  ›  技术社区  ›  JL. Hans Passant

c linq-无法将ienumerable<string>隐式转换为list<string>

  •  16
  • JL. Hans Passant  · 技术社区  · 14 年前

    我有一个这样定义的列表:

    public List<string> AttachmentURLS;
    

    我正在向列表中添加如下项:

    instruction.AttachmentURLS = curItem.Attributes["ows_Attachments"].Value.Split(';').ToList().Where(Attachment => !String.IsNullOrEmpty(Attachment));
    

    但我遇到了此错误:无法将IEnumerable隐式转换为List

    我做错什么了?

    3 回复  |  直到 6 年前
        1
  •  39
  •   kmote Funkpotamus    6 年前

    Where方法返回 IEnumerable<T> . 尝试添加

    .ToList()
    

    到最后,就像这样:

    instruction.AttachmentURLS = curItem.Attributes["ows_Attachments"]
      .Value.Split(';').ToList()
      .Where(Attachment => !String.IsNullOrEmpty(Attachment))
      .ToList();
    
        2
  •  7
  •   juharr    9 年前

    移动 .ToList() 最后像这样

    instruction.AttachmentURLS = curItem
        .Attributes["ows_Attachments"]
        .Value
        .Split(';')
        .Where(Attachment => !String.IsNullOrEmpty(Attachment))
        .ToList();
    

    Where扩展方法返回 IEnumerable<string> Where 将在数组上工作,因此 ToList 之后就不需要了 Split .

        3
  •  2
  •   Johnny    14 年前

    这个 .ToList() 应该是最后。因为在代码中, () 在此之前和之后的操作将再次转到以前的状态。Where方法返回IEnumerable。