C# 从对象类型转换为模型类型
本文关键字:模型 类型 类型转换 对象 | 更新日期: 2023-09-27 18:27:19
我有一个空列表,其中包含类型为"audi_b9_aismura"的模型,我想用从另一个列表中检索的对象填充该列表。
我知道这个对象是指定的类型(audi_b9_aismura(,但我不能将其添加到列表中,使用 Convert.Changetype 也不起作用。下面的代码(在设计时(引发以下错误:无法从"对象"转换为".audi_B9_aismura"。
List<audi_b9_aismura> dataList = new List<audi_b9_aismura>();
if (obj.GetType().Equals(typeof(audi_b9_aismura)))
{
dataList.Add(Convert.ChangeType(obj, typeof(audi_b9_aismura)));
}
我也试过了,这也不起作用。
audi_b9_aismura testVar = Convert.ChangeType(obj, typeof(audi_b9_aismura));
并且,它可以正常转换它,但是当添加它再次说它是类型对象。
var testVar = Convert.ChangeType(obj, typeof(audi_b9_aismura));
dataList.Add(testVar);
如果我通过填充字符串来检索对象类型,它将返回正确的类型 (audi_b9_aismura(
string result = Convert.ChangeType(obj, typeof(audi_b9_aismura)).GetType().ToString();
为什么不做一个简单的演员表:
if (obj is audi_b9_aismura)
{
dataList.Add((audi_b9_aismura)obj);
}
正如 Ben Robinson 在他的评论中所说,Convert.ChangeType()
返回一个仍然必须转换为正确类型的object
。
LINQ 提供了 Cast<> 和 OfType<> 方法,这些方法允许您分别按特定类型强制转换或筛选对象。
要以列表形式检索特定类型的项目,您可以编写:
var dataList=sourceList.OfType<audi_b9_aismura>().ToList();
如果确定源仅包含特定类型的项,则可以编写:
var dataList=sourceList.Cast<audi_b9_aismura>().ToList();
尝试:
List<audi_b9_aismura> dataList = new List<audi_b9_aismura>();
if (obj is audi_b9_aismura)
{
dataList.Add((audi_b9_aismura)obj);
}