2010-09-30 5 views
1

Existe-t-il un moyen plus élégant/plus concis? Je voudrais me débarrasser de la boucle foreach avec le code d'initialisation WorkListItem.IQueryable, conversion du type anonyme en type fort

 var queryable = registrations.Select(
      r => new 
        { 
         r.Id, r.AccountNumber, r.DateAdded, r.DateUpdated, r.Patient, r.Patient.InsuranceInfos 
        }); 
     var list = queryable.ToList(); 

     var workListItems = new List<WorkListItem>(); 
     foreach (var anonymous in list) 
     { 
      var w = new WorkListItem 
         { 
          Id = anonymous.Id, 
          ClientAccountId = anonymous.AccountNumber, 
          DateAdded = anonymous.DateAdded, 
          DateUpdated = anonymous.DateUpdated, 
          Patient = anonymous.Patient, 
          InsuraceInfos = anonymous.Patient.InsuranceInfos 
         }; 
      workListItems.Add(w); 
     } 
     return workListItems; 
+0

Je suppose que vous avez tryied un ToList ou quelque chose comme ça. .. – sebagomez

+0

J'ai essayé ceci, il retourne juste une liste d'emapty var list = queryable.OfType (). ToList(); –

Répondre

3

Oui, vous pouvez couper complètement le « middle-man », comme il était et sélectionnez directement dans une nouvelle WorkListItem comme ci-dessous:

var list = registrations.Select(r => new WorkListItem 
      { 
       Id = r.Id, 
       ClientAccountId = r.AccountNumber, 
       DateAdded = r.DateAdded, 
       DateUpdated = r.DateUpdated, 
       Patient = r.Patient, 
       InsuraceInfos = r.Patient.InsuranceInfos 
      }).ToList(); 
+0

ou même ajouter la possibilité pour la classe 'WorkListItem' à être cast à partir d'un' enregistrement ' – PostMan

+0

qui fonctionne, merci! –