c# - .Net 4.0 无法将“System.Collections.Generic.List`1[ClassName]”类型的对象转换为“ClassName”类型
问题描述
public class SkillView {
public string Name { get; set; }
public IList<SkillValueView> Selected { get; set; }}
public class SkillValueView {
public string APlan { get; set; }
public DateTime? DueDate { get; set; }}
private IList<SkillValueView> MapToSkillValueList(IGrouping<string, GetSession_Result> query)
{
var actionItem = query.FirstOrDefault();
List<SkillValueView> LSVV = new List<SkillValueView>();
SkillValueView SVV = new SkillValueView();
for (int i = 0; i < actionItem.NoOf; i++)
{
SVV.APlan = actionItem.ExAPlan;
SVV.DueDate = actionItem.ExDueDate;
LSVV.Add(new SkillValueView() { APlan = SVV.APlan, DueDate = SVV.DueDate });
}
}
return LSVV;
}
private SkillView MapToSkill(IGrouping<int, GetSession_Result> query){
var skill = query.FirstOrDefault();
return new SkillView()
{
Name = skill.SkillName,
Selected = query.GroupBy(s => s.ExAPlan).Select(MapToSkillValueList).ToList()
};
}
我无法映射此 > Selected = query.GroupBy(s => s.ExAPlan).Select(MapToSkillValueList).ToList()并收到错误无法转换类型为“System.Collections.Generic.List`1[ IsaiX.Coach.Models.SkillValueView]' 输入'IsaiX.Coach.Models.SkillValueView'。
解决方案
在这种情况下,您应该使用SelectMany
而不是Select
.
query.GroupBy(s => s.ExAPlan).SelectMany(MapToSkillValueList).ToList().
将序列的每个元素投影到 IEnumerable 并将生成的序列展平为一个序列
推荐阅读
- javascript - Promise 中的 Promise 队列
- python - 循环函数中的时间没有改变
- sql - 从连接表创建 JSON
- visual-studio - SDK风格的csproj项目中的“none include”和“none update”有什么区别?
- ruby - 如何在 Ruby 中使用宝石?
- android - 我该如何解决:BadHttpRequestException:“块大小数据错误。”
- c# - 使用 WCF 使用受基本身份验证和证书保护的 SOAP 服务
- python - 禁止所有 InsecureRequestWarnings
- c# - 来自数组的测量值的 C# UWP 平均值
- javascript - 无法获取对象的基本类型