我有以下类(class):
public class Column
{
public String Name;
public String Value;
}
public class ColumnList : List<Column> {}
然后我做:
var cols = (from c in othercolumnlist
select new Column
{
Name = c.Name,
}).ToList() as ColumnList;
但是它返回空值。我怎样才能成功地转换到我的名单中?
最佳答案
ColumnList
是 List<Column>
但是List<Column>
不是 ColumnList
.考虑 Animal
和 Dog
类:
public class Animal
{
}
public class Dog: Animal
{
}
你要做的是把任何动物都当作狗来对待。但并非所有动物都是狗。可以有 Cat
或 Kangaroo
.这就是为什么 as ColumnList
返回 null
.
您需要创建新的 ColumnList
改为实例并手动向其添加列:
var columnList = new ColumnList();
columnList.AddRange(othercolumnlist.Select(c => new Column { Name = c.Name }));
如果您需要经常这样做,那么您可以将静态创建方法添加到您的ColumnList
类:
public static ColumnList CreateFrom(ColumnList other)
{
var columnList = new ColumnList();
columnList.AddRange(other.Select(c => new Column { Name = c.Name }));
return columnList;
}
并以这种方式使用它:
var columnList = ColumnList.CreateFrom(otherColumnList);
关于c# - Linq 转换为列表<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22611926/