将LINQ Group By Data传递给新的对象列表

时间:2018-04-09 08:58:50

标签: c# linq group-by

我正在尝试在C#中创建LINQ查询,该查询获取对象列表,执行分组并依赖列表,然后将结果传递给新的对象列表。

这是我的LINQ查询,它执行group by和count,但没有将数据传输到我需要的列表中,而是一个匿名类型列表。

Union

var dataPoints = from e in evaluations.Take(20) group e.EvaluationID by e.description into g select new { Profession = g.Key, Count = g.Count() }; 变量返回匿名类型列表,数据类似于:

dataPoints

我希望返回[0] Profession = "Doctor", Count = 12 [1] Profession = "Nurse", Count = 6 [2] Profession = "Health Visitor", Count = 2 个对象的列表,而不是将数据返回到匿名类型列表中。以下是我的DataPoint对象。

DataPoint

我已经尝试修改我的查询到这样的事情,但是我得到一个错误,说DataPoint不包含带0参数的构造函数。

public class DataPoint
{
    public DataPoint(double y, string label)
    {
        this.Y = y;
        this.Label = label;
    }

    [DataMember(Name = "y")]
    public Nullable<double> Y = null;

    [DataMember(Name = "label")]
    public string Label;
}

任何建议都非常感谢。

1 个答案:

答案 0 :(得分:2)

要使属性初始值设定项起作用,您需要一个无参数构造函数,并且您的字段应该是可以访问的属性:

public class DataPoint
{
    [DataMember(Name = "y")]
    public Nullable<double> Y  { get; set; };

    [DataMember(Name = "label")]
    public string Label { get; set; }

    public DataPoint()
    {
    }

    public DataPoint(double y, string label)
    {
       Y = y;
       Label = label;
    }
}

现在您的代码应该编译,或者使用带有参数的构造函数作为评论中建议的人。