LINQ-选择基于集合属性的匿名类型
本文关键字:属性 类型 集合 选择 于集合 LINQ- | 更新日期: 2023-09-27 18:24:20
我有以下类:
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
值作为单独的属性添加到匿名对象?
你不能,除非你知道编译时列表中的项数。匿名类型的思想是它们是静态类型的。编译器在编译时知道所有属性及其类型是什么。如果你不知道这些信息,你就不能使用它。
例如,如果你知道总是有两个项目,那么你可以做这样的事情:
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();