我从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());
但是我无法摆脱错误:"无法使用集合initalizer初始化System.TimeSpan,因为它没有实现IEnumerable。
有什么问题?我怀疑这是一个语法问题,但我无法弄明白,以前我这样做了:
_result.ForEach(t => t.horariofinAFSP = model.AsistenciaCurso.Where(u => u.UserId.Equals(t.UserId)).Select(x => x.HorarioFin).ToList());
这是好的,因为我使用linq Select,但后来我尝试使用这样的lambdas加入:
_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 })));
但是这会导致无法使用集合进行初始化的相同错误。我真的没有时间去谷歌这么多,所以这就是我提出这个问题的原因。任何帮助将不胜感激。 提前谢谢。
答案 0 :(得分:1)
(我知道已找到解决方案;发布答案,因为没有其他人为此烦恼)
如错误所示,您无法使用集合初始值设定程序初始化TimeSpan。
TimeSpan有four different constructors你可以在创建一个新的时候选择,但如果你已经有一个时间跨度,那么就使用它:
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 U.HorarioInicio