在 C# 中将匿名类型更改为对象列表

本文关键字:对象 列表 类型 | 更新日期: 2023-09-27 18:30:17

>我正在使用Linq,并且有一个如下所示的函数来从数据库中获取数据,因为当我将此数据拉入网格视图时,我无法反对TblSpareParts表来编辑网格中的数据

private void LoadParts()
{
        RST_DBDataContext conn = new RST_DBDataContext();
        var AllParts = (from s in conn.TblSpareParts
                        join m in conn.TblBikeModels on s.ModelID equals m.ModelID
                        select new { s.SPartName, s.SPartCode, s.SPartLocation, s.SPartID, s.TblBikeModel.ModelName }).ToArray();
        SParts_grid.ItemsSource = AllParts;
}

我想要这样的函数,

private void LoadParts()
{
            RST_DBDataContext conn = new RST_DBDataContext();
            List<TblSparePart> AllParts = (from s in conn.TblSpareParts
                            join m in conn.TblBikeModels on s.ModelID equals m.ModelID
                            select new { s.SPartName, s.SPartCode, s.SPartLocation, s.SPartID, s.TblBikeModel.ModelName }).ToList();
            SParts_grid.ItemsSource = AllParts;
}

所以基本上我想把这部分var AllParts改为List<TblSparePart> AllParts,把这.ToArray();改为.ToList();

在 C# 中将匿名类型更改为对象列表

尝试更改代码:

...
select new { s.SPartName, s.SPartCode, s.SPartLocation, s.SPartID, s.TblBikeModel.ModelName }).ToList();
...

成为

...
select new TblSparePart { 
    // partName, partCode, etc are TblSparePart class property
    partName = s.SPartName, 
    partCode = s.SPartCode,
    ...
    ...
}).ToList();
...

你不能。

您不能将匿名对象随机转换为其他对象..所以即使这样也不起作用:

.ToList<TblSparePart>();

你能做的......实际上不返回匿名对象。 返回实际对象:

select new TblSparePart() {
    PartName = s.SPartName,
    PartCode = s.SPartCode
}

..等。