Tengo una aplicación wpf c #. Tengo que enumerar colecciones. Quiero unirme a estas 2 listas y devolver los resultados que coincidan con un criterio. Quiero que el resultado se cargue en una nueva lista / modelo.

Este es mi código hasta ahora:

var Results = from j in res
             join c in Customer.GetBaseData() on j.CustomerRef equals c.CustomerRef
             where j.JobStatusRef == jobStatusRef                  
             select new {
                 c.CustomerRef,
                 c.CustomerId,
                 c.Add1,
                 c.Town,
                 c.FName,
                 c.SName,
                 j.DateReq,
                 j.JobId,
                 j.JobRef,
                 j.JobStatus
             };

Este es mi modelo de destino:

public class CustomerJobs
{
    public int JobId { get; set; }     
    public string CustomerRef { get; set; }
    public string DateReq { get; set; }     
    public string JobRef { get; set; }      
    public string JobStatus { get; set; }
    public int CustomerId { get; set; }
    public string SName { get; set; }
    public string FName { get; set; }
    public string Add1 { get; set; }
    public string Town { get; set; }
}

¿No sé cómo hacer este paso final?

0
Andrew Simpson 26 ene. 2016 a las 18:51

2 respuestas

La mejor respuesta

En lugar de crear un tipo anónimo con new { ... }, use directamente su modelo en la selección:

var Results = from j in res
         join c in Customer.GetBaseData() on j.CustomerRef equals c.CustomerRef
         where j.JobStatusRef == jobStatusRef
         // Note the "new CustomerJobs" part.                  
         select new CustomerJobs {
             c.CustomerRef,
             c.CustomerId,
             c.Add1,
             c.Town,
             c.FName,
             c.SName,
             j.DateReq,
             j.JobId,
             j.JobRef,
             j.JobStatus
         };
6
Good Night Nerd Pride 26 ene. 2016 a las 15:55

Cuando selecciona en linq, puede especificar el tipo de objeto como:

var Results = from j in res
             join c in Customer.GetBaseData() on j.CustomerRef equals c.CustomerRef
             where j.JobStatusRef == jobStatusRef                  
             select new CustomerJobs {
                CustomerRef = c.CustomerRef,
                CustomerId = c.CustomerId,
                Add1 = c.Add1,
                Town = c.Town,
                FName = c.FName,
                SName = c.SName,
                DateReq = j.DateReq,
                JobId = j.JobId,
                JobRef = j.JobRef,
                JobStatus = j.JobStatus
             };
3
Zippy 26 ene. 2016 a las 15:56