1

我有以下课程:

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

我想在Select这个类的 List 上创建一个 LINQ 来提取一些这样的属性:

        return data.Select(x => new
        {
            x.DeviceID,
            x.DeviceName,
            x.HasChild,
            x.KwhImport,
            x.KwhExport,
            x.MaxDmd,
            x.ParentID
        }).ToList();

如何将Tarrifs值作为单独的属性添加到匿名对象?

4

1 回答 1

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();
于 2013-07-22T15:25:35.810 回答