2017-08-25 44 views
0

在我的第一個問題中,我沒有解釋清楚。但是現在我需要從實體框架類中選擇一些列。如何在實體框架中選擇多個列?

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

而且我想表明: '農佈雷', '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; } 
} 

回答

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用含有IEnumerablecalificacion的動態對象的名單來自evaluateacion表的值。

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

這會給你存儲在變量Muestra每個從evaluacion表含calificacionIEnumerable的價值ProjectionResult對象的列表。

+1

OMG!第二作品!謝謝Stackoverflow的Member先生 –

0

你的答案是確定的,但它不顯示

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

但是,謝謝你的快速回答! OMG!