2010-09-30 198 views
1

是否有更優雅/簡潔的方式;我想擺脫WorkListItem初始化代碼的foreach循環。IQueryable,將匿名類型轉換爲強類型

 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

我假設你已經tryied一個ToList或類似的東西。 .. – sebagomez 2010-09-30 22:44:55

+0

我試過這個,它只是返回一個emapty列表var list = queryable.OfType ()。ToList(); – 2010-09-30 22:46:11

回答

3

是的,你可以完全切斷了「中間人」,因爲它是和選擇直接進入一個新的WorkListItem如下:

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

甚至可以添加'WorkListItem'類的能力,以便從'registration' – PostMan 2010-09-30 22:51:53

+0

開始投射,謝謝! – 2010-09-30 22:57:36