我正在尝试在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;
}
任何建议都非常感谢。
答案 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;
}
}
现在您的代码应该编译,或者使用带有参数的构造函数作为评论中建议的人。