我有以下课程:
public class DistributionItem
{
public int DeviceID { get; set; }
public string DeviceName { get; set; }
public double? Export { get; set; }
public double? Import { get; set; }
public List<double?> Tarrifs { get; set; }
public bool HasChild { get; set; }
public int OrderNum { get; set; }
public double PF { get; set; }
public int? MaxDmd { get; set; }
public string ImageUrl { get; set; }
public int ParentID { get; set; }
public double? Total { get; set; }
}
我想在这个类的List上创建一个LINQ Select
来拉出一些像这样的属性:
return data.Select(x => new
{
x.DeviceID,
x.DeviceName,
x.HasChild,
x.KwhImport,
x.KwhExport,
x.MaxDmd,
x.ParentID
}).ToList();
如何将Tarrifs
值作为单独的属性添加到匿名对象?
答案 0 :(得分:8)
除非您在编译时知道列表中的项目数,否则不能。匿名类型的想法是它们静态类型。编译器在编译时知道所有属性及其类型是什么。如果您不知道该信息,则不能使用。
如果您知道例如总是有两个项目,那么您可以执行以下操作:
return data.Select(x => new
{
x.DeviceID,
x.DeviceName,
x.HasChild,
x.KwhImport,
x.KwhExport,
x.MaxDmd,
x.ParentID,
Tarrifs1 = x.Tarrifs[0],
Tarrifs2 = x.Tarrifs[1],
}).ToList();