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();

C# 从对象类型转换为模型类型

为什么不做一个简单的演员表:

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);
}