C#:错误 - 无法将类型'int'隐式转换为'System.Collections.Generic.IEnumerable <double>'

时间:2016-10-18 07:24:04

标签: c# c++ .net generics casting

我试图覆盖对象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查询结果,如附图所示。

enter image description here

我必须通过一些改动来覆盖那个中值。我试过的代码段如下。

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的一些建议,

  1. LINQ: Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<int>' to 'int'
  2. Linq Query : Cannot convert type IEnumerable<string> to string changing .ToString() to (string)
  3. Cannot implicitly convert type 'System.Collections.Generic.IEnumerable
  4. 过去一天半,我正在努力解决这个问题。任何建议都会非常有用。

2 个答案:

答案 0 :(得分:2)

没有类型varMedian不是int,而是可枚举的双倍。这意味着它(可能)包含多个值,而不仅仅是一个。

如果要将Median替换为单个值7,则可以创建一个数组:

resultData[0].Median = new [] { 7d };

答案 1 :(得分:2)

这会有所帮助!

        resultData[0].Median = new List<double>() {updatedMedian};