【发布时间】:2015-03-21 11:25:45
【问题描述】:
我从 linq 查询到实体构建 ViewModel,然后执行以下 foreach:
_result.ForEach(t => t.horarioiniAFSP = (from U in model.AsistenciaCurso
join T in model.Parametros
on U.IdCurso equals T.ValorNumerico
where U.UserId.Equals(t.UserId)
&& T.NombreParametro == "Modulo1"
select new TimeSpan
{
U.HorarioInicio
}).ToList());
但是我无法摆脱错误:“无法使用集合初始化器初始化 System.TimeSpan,因为它没有实现 IEnumerable。
怎么了?我怀疑这是语法问题,但我无法弄清楚,以前我是这样做的:
_result.ForEach(t => t.horariofinAFSP = model.AsistenciaCurso.Where(u => u.UserId.Equals(t.UserId)).Select(x => x.HorarioFin).ToList());
这没关系,因为我使用的是 linq Select,但后来我尝试使用 lambda 进行连接,如下所示:
_result.ForEach(t => t.horarioiniAFSP.AddRange(model.AsistenciaCurso.Where(u => u.UserId.Equals(t.UserId)).Join(model.Parametros, id => id.IdCurso, num => num.ValorNumerico, (id, num) => new TimeSpan { id.HorarioInicio })));
但这会触发相同的错误,即无法使用集合进行初始化。我真的没有时间在谷歌上搜索太多,所以这就是我问这个问题的原因。任何帮助将不胜感激。 提前致谢。
【问题讨论】:
-
HorarioInicio的类型是什么? -
另外,我真的没有时间去谷歌搜索这个问题不是问堆栈溢出问题的好理由......
-
在 SQL server HorarioInicio 中是 Time(0) 而在 C# 中是 TimeSpan
-
比
select u.HorarioInicio应该可以解决问题。 -
是的,谢谢,就像我说的那样,我怀疑这是语法问题,因为根据我的阅读,当您初始化一个类而没有明确声明它的属性时似乎会出现错误,所以这次没有要申报的财产,对吧?