无法将类型'System.Collections.Generic.List <anonymoustype#1>'隐式转换为'System.Collections.Generic.List <string>'</string> </anonymoustype#1>

时间:2014-05-03 21:40:11

标签: c# linq linq-to-xml

我收到以下错误

Cannot implicitly convert type
'System.Collections.Generic.List<AnonymousType#1>' to
'System.Collections.Generic.List<string>'

我尝试阅读有关堆栈溢出的类似问题,但没有找到解决方案。 我的代码如下

var head =     
    from key in doc.Descendants("Header").Descendants("Article")
    select new 
     {
       value = (key.Value == String.Empty ?
       from q in doc.Descendants("Header").Descendants("Article") select q.Value : from a in doc.Descendants("Header").Descendants("Article") 
      select a.Attribute("DefaultValue").Value)

    };
List<string> hsourceFields = head.ToList();

如果xml节点的值为空,我将读取为该xml节点

指定的默认值
<Header>      
<Article>News</Article>
<Article DefaultValue ="Sport"></Article>    
</Header>

我希望能够通过获取错误来返回我无法使用的List。

enter image description here

3 个答案:

答案 0 :(得分:2)

您的代码看起来像是List<AnonType{value = List<string>}>而不是List<string>

我认为你想要这样的东西将从文章中选择文本,或者如果它是空的,它将采用DefaultValue属性的值。请注意,如果没有文本且没有属性,则无法处理。

var head =     
    from key in doc.Descendants("Header").Descendants("Article")
    select      
      string.IsNullOrEmpty(key.Value) ?
          key.Attribute("DefaultValue").Value :
          key.Value;
List<string> hsourceFields = head.ToList();

或者使用xpath和方法链的略微缩写的版本

var hsourceFields = doc.XPathSelectElements("/Header/Article")
     .Select (x => string.IsNullOrEmpty(x.Value) ?
        x.Attribute("DefaultValue").Value :
        x.Value).ToList() 

答案 1 :(得分:0)

如果您阅读错误,它会告诉您问题。您需要一个字符串列表,但是您有一个匿名对象列表。而是使用

var hSouceFields = head.ToList()

答案 2 :(得分:0)

我改变了读取xml节点的方式

var head = (from k in doc.Descendants("Header")
            select k).ToList();

List<String> hsourceFields = new List<string>();

 foreach (var t in head.Descendants("Article"))
 {
     if (t.Attribute("DefaultValue") != null)
      {
          hsourceFields.Add(t.Attribute("DefaultValue").Value);
      }
      else
           hsourceFields.Add(t.Value);
} 

虽然不以我的解决方案为荣。

相关问题