C#Generic List转换为实现List <T>的类

Joh*_*ock 3 c# generics list linq-to-xml

以下代码产生问题

无法将类型隐式转换'System.Collections.Generic.IEnumberable<DataField<string>>'为"DataFields".存在显式转换(您是否错过了演员?).

我该如何解决这个问题?我究竟做错了什么?

public class DataFields : List<DataField>
{
}

public abstract class DataField
{
    public string Name { get; set; }
}

public class DataField<T> : DataField
{
    public T Value { get; set; }
}

public static DataFields ConvertXML(XMLDocument data) {
    DataFields result = (from d in XDocument.Parse(data.OuterXML).Elements()
                      select new DataField<string>
                      {
                          Name = d.Name.ToString(),
                          Value = d.Value
                      }).ToList();
    return result;
}
Run Code Online (Sandbox Code Playgroud)

编辑:将以下信息移至另一个问题.

使用LINQ创建List <T>,其中T:someClass <U>

另外,我希望能够在此语句中执行类似下面的操作,以便为每个语句设置值的类型.我怎样才能做到这一点.

select new DataField<[Attribute of element called type]>
{
  Name = d.Name.ToString(),
  Value = d.Value
}
Run Code Online (Sandbox Code Playgroud)

Ric*_*end 5

将以下构造函数添加到DataFields类中

public class DataFields : List<DataField> {
    public DataFields() : base() {}
    public DataFields(IEnumerable<DataField> items) : base(items){}
}  
Run Code Online (Sandbox Code Playgroud)

然后

public static DataFields ConvertXML(XMLDocument data) {      
    var result = (BLAH..).ToList();      
    return new DataFields(result);     
}  
Run Code Online (Sandbox Code Playgroud)