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

时间:2013-09-06 04:04:08

标签: c# linq

我正在使用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();

2 个答案:

答案 0 :(得分:2)

尝试更改您的代码:

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

答案 1 :(得分:0)

你不能。

您无法将匿名对象随机转换为其他内容..所以即使这样也行不通:

.ToList<TblSparePart>();

你能做什么..实际上并不是返回匿名对象..返回实际对象:

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

...等。