在我的第一个问题中,我没有很好地解释。但是现在我需要从实体框架类中选择一些列。

var Muestra = Cecytec.asignatura.Select(Z => new asignatura { nombre = Z.nombre, horasPorSemana = Z.horasPorSemana, nivel = Z.nivel, unidades = Z.unidades }).ToList();


从我的课(表)“ signsigna”我有这个:

public partial class asignatura
{
    public asignatura()
    {
        this.criterioevaluacion = new HashSet<criterioevaluacion>();
        this.evaluacion = new HashSet<evaluacion>();
        this.examen = new HashSet<examen>();
        this.alumno = new HashSet<alumno>();
        this.horario = new HashSet<horario>();
        this.profesor = new HashSet<profesor>();
    }

    public int idAsignatura { get; set; }
    public Nullable<int> horasPorSemana { get; set; }
    public string nombre { get; set; }
    public Nullable<int> nivel { get; set; }
    public Nullable<int> unidades { get; set; }
    public int semestres_idsemestres { get; set; }

    public virtual semestres semestres { get; set; }
    public virtual ICollection<criterioevaluacion> criterioevaluacion { get; set; }
    public virtual ICollection<evaluacion> evaluacion { get; set; }
    public virtual ICollection<examen> examen { get; set; }
    public virtual ICollection<alumno> alumno { get; set; }
    public virtual ICollection<horario> horario { get; set; }
    public virtual ICollection<profesor> profesor { get; set; }
}


我想展示:“ nombre”,“ horasPorSemana”,“ nivel”,“ unidades”和“ calificacion”

注意:“ calificacion”在另一个类别中

public partial class evaluacion
{
    public int unidad { get; set; }
    public Nullable<double> calificacion { get; set; }
    public Nullable<int> inasistencia { get; set; }
    public string observaciones { get; set; }
    public int asignatura_idAsignatura { get; set; }

    public virtual asignatura asignatura { get; set; }
}

最佳答案

在投影中,您将从数据库中投影到实体。您需要做的是以下两种选择之一:

1)投影到动态对象

var Muestra = Cecytec
    .asignatura
    .Select(Z => new
        {
            nombre = Z.nombre,
            horasPorSemana = Z.horasPorSemana,
            nivel = Z.nivel,
            unidades = Z.unidades,
            evaluacion_calificacion = Z.evaluacion.Select(e => e.calificacion)
        })
    .ToList();


这将为您提供存储在变量Muestra中的动态对象的列表,每个对象都包含评估表中IEnumerablecalificacion值。

2)投影到具有所需属性的预定义类

这与上面的类似,但是您只定义了一个类来保存属性。

public class ProjectionResult
{
    public string nombre { get; set; }
    public Nullable<int> horasPorSemana { get; set; }
    public Nullable<int> nivel { get; set; }
    public Nullable<int> unidades { get; set; }
    public IEnumerable<Nullable<double>> evaluacion_calificacion { get; set; }
}


然后像这样运行投影:

var Muestra = Cecytec
    .asignatura
    .Select(Z => new ProjectionResult
        {
            nombre = Z.nombre,
            horasPorSemana = Z.horasPorSemana,
            nivel = Z.nivel,
            unidades = Z.unidades,
            evaluacion_calificacion = Z.evaluacion.Select(e => e.calificacion)
        })
    .ToList();


这将为您提供存储在变量ProjectionResult中的Muestra个对象的列表,每个对象都包含来自评估表的IEnumerablecalificacion值。

09-27 20:53