这个linq出了什么问题?试图制作一个IN子句

时间:2012-03-02 02:15:09

标签: c# linq

这是我的linq

from G in Gestion select new
{
    GestionInicio = G.HoraInicio,
    GestionFin = G.HoraFin,
    hola = (from T in Tipificacion where T.IdTipificacion == G.IDTipificacion select T).FirstOrDefault().Nombre,
    LlamadaInicio = G.Llamada.HoraInicio,
    LlamadaFin = G.Llamada.HoraFin,
    Login = G.Llamada.Sesion.Usuario.Nombre
}

对我来说,代码看起来很好,但我看不出问题,这就是为什么我问这个,而且我知道这个问题与我的sub linq的结果有关。

好的,所以看到我无法做出足够的努力来解释这个问题

我试图用这个linq做什么它是一个IN,换句话说,在我的sub linq中我传递了参数来进行连接

2 个答案:

答案 0 :(得分:1)

错误是什么?

FirstOrDefault可以返回null。尝试从Nombre获取null属性将引发异常。

我们只有在向您展示问题时才能提供帮助。

from g in Gestion select new
{
    GestionInicio = g.HoraInicio,
    GestionFin = g.HoraFin,
    hola = Tipificacion.FirstOrDefault(t => t.IdTipificacion == g.IDTipificacion).Nombre,
    LlamadaInicio = g.Llamada.HoraInicio,
    LlamadaFin = g.Llamada.HoraFin,
    Login = g.Llamada.Sesion.Usuario.Nombre
}

答案 1 :(得分:1)

在@Nick Strupat的帮助下,我意识到问题的一部分是保证值不为null所以我做了一个条件,它就像这样工作

var gestiones = (from G in db.Gestion select new GestionesDataSet()
        {
           GestionInicio = G.HoraInicio,
           GestionFin = G.HoraFin,
           @Tipificacion = ((from T in db.Tipificacion select T).Where( x => x.IdTipificacion == G.IDTipificacion).Count() > 0 ?
                            (from T in db.Tipificacion where T.IdTipificacion == G.IDTipificacion select T.Nombre).FirstOrDefault() : ""),
           LlamadaInicio = G.Llamada.HoraInicio,
           LlamadaFin = G.Llamada.HoraFin,
           Login = G.Llamada.Sesion.Usuario.Nombre
        }).ToList();