【问题标题】:How to select multiple columns in entity framework?如何在实体框架中选择多个列?
【发布时间】:2018-02-03 00:37:08
【问题描述】:

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

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

从我的班级(表)“asignatura”我有这个:

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; }
}

【问题讨论】:

    标签: c# mysql entity-framework


    【解决方案1】:

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

    1. 项目到一个匿名类

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

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

    1. 项目到具有您需要的属性的预定义类

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

    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();
    

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

    【讨论】:

    • 天啊!第二个作品!谢谢来自 Stackoverflow 的会员先生
    • @GertArnold 正确,谢谢。我已经修改了答案。
    【解决方案2】:

    你的答案是好的,但它不显示

    evaluacion_calificacion = Z.evaluacion.Select(e => e.calificacion)
    

    始终为空,以解决我这样做的问题:

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

    然后将查询更改为最后一行:

     var Muestra = Actualmente.Select(Z => new ProyeccionAcademica
                    {
                        nombre = Z.nombre,
                        horasPorSemana = Z.horasPorSemana,
                        nivel = Z.nivel,
                        unidades = Z.unidades,                        
                        calificacion = Z.evaluacion.First(Find => Find.asignatura_idAsignatura == Z.idAsignatura).calificacion                        
                        }).ToList();
    

    但感谢您的快速回答!!!

    【讨论】:

      猜你喜欢
      • 2013-11-01
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 2012-05-02
      • 2022-01-23
      • 1970-01-01
      相关资源
      最近更新 更多