.Net 4.0 无法将“System.Collections.Generic.List`1[ClassName]”类型的对象转换为“ClassName”类型
Posted
技术标签:
【中文标题】.Net 4.0 无法将“System.Collections.Generic.List`1[ClassName]”类型的对象转换为“ClassName”类型【英文标题】:.Net 4.0 Unable to cast object of type 'System.Collections.Generic.List`1[ClassName]' to type 'ClassName' 【发布时间】:2021-08-27 19:11:41 【问题描述】: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()
。 "SelectMany 将生成的序列扁平化为一个序列"
感谢@Igor 它解决了问题。
【参考方案1】:
在这种情况下,您应该使用SelectMany
而不是Select
。
query.GroupBy(s => s.ExAPlan).SelectMany(MapToSkillValueList).ToList().
将序列的每个元素投影到 IEnumerable 并将生成的序列展平为一个序列
【讨论】:
以上是关于.Net 4.0 无法将“System.Collections.Generic.List`1[ClassName]”类型的对象转换为“ClassName”类型的主要内容,如果未能解决你的问题,请参考以下文章
C#.NET 4.0 - HttpWebRequest.GetRepsonse() 无法访问 Web 服务
无法在 C#.Net 4.0 Visual Studio 中添加对 rzdcx.DLL 的引用