无法在linq查询中使用集合初始化程序初始化TimeSpan¿语法错误?

时间:2015-03-21 03:12:38

标签: c# linq

我从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 })));

但是这会导致无法使用集合进行初始化的相同错误。我真的没有时间去谷歌这么多,所以这就是我提出这个问题的原因。任何帮助将不胜感激。 提前谢谢。

1 个答案:

答案 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