我试图覆盖对象EducationData的中值,模型定义如下,
// EducationData model
[DataMember(Name = "DegreeConferred", Order = 1)]
public int DegreeConferred { get; set; }
[DataMember(Name = "NoOfInstitutions", Order = 3)]
public int NoOfInstitutions { get; set; }
[DataMember(Name = "Mean", Order = 6)]
public int Mean { get; set; }
[DataMember(Name = "Median", Order = 7)]
public IEnumerable<double> Median { get; set; }
CachedData的类型为var,包含教育详细信息的ES查询结果,如附图所示。
我必须通过一些改动来覆盖那个中值。我试过的代码段如下。
var resultData = cachedData.ToArray();
resultData[0].Mean = resultData[0].DegreeConferred / resultData[0].NoOfInstitutions; // calculated mean with no error
var updatedMedian = 7; // say for sample, because there is a need to override this queried value with some modification.
resultData[0].Median = updatedMedian; // Error line: Cannot implicitly convert type 'int' to 'System.Collections.Generic.IEnumerable<double>'
请注意:在模型中将属性更改为int将影响其他位置的实现。所以在这里做铸造会更好。
我尝试使用ReSharper建议,但没有任何作用
resultData[0].Median = Convert.ToDouble(updatedMedian);
resultData[0].Median = IEnumerable<double>updatedMedian;
Also changing the property of updatedMedian will affect the calculation steps.
我也尝试过SO的一些建议,
答案 0 :(得分:2)
没有类型var
,Median
不是int
,而是可枚举的双倍。这意味着它(可能)包含多个值,而不仅仅是一个。
如果要将Median
替换为单个值7,则可以创建一个数组:
resultData[0].Median = new [] { 7d };
答案 1 :(得分:2)
这会有所帮助!
resultData[0].Median = new List<double>() {updatedMedian};