在我的第一个问题中,我没有解释清楚。但现在我需要从实体框架类中选择一些列。
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; }
}
答案 0 :(得分:2)
在投影中,您将从数据库投射到实体。您需要做的是两个选项之一:
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
中的动态对象列表,每个动态对象包含来自评估表的IEnumerable
个calificacion
值。
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
个对象的列表,每个对象都包含来自评估表的IEnumerable
个calificacion
值。
答案 1 :(得分:0)
您的回答没问题,但没有显示
evaluacion_calificacion = Z.evaluacion.Select(e => e.calificacion)
始终为null,以解决我这样做的问题:
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();
但是谢谢你的快速回答!!!