2016-06-08 6 views
1
namespace SubscriptionWebsite.PlaceHolders 
{ 
    public class TreeData 
    { 
     public int ID { get; set; } 
     public int? ParentLocationID { get; set; } 
     public string name { get; set; } 
     public int? Locationlevel { get; set; } 
     public string participation { get; set; } 
    } 
} 


namespace SubscriptionWebsite.Managers 
{ 
    public class TreeDataManager 
    { 
     SubscriptionWebsite.Entities.acc_core_dbEntities db = new SubscriptionWebsite.Entities.acc_core_dbEntities(); 

     public List<TreeData> GetTreeData() 
     { 
      List<TreeData> Location = db.frm_location.Where(x => !x.Removed && x.Revision == 0).Select(loc => new TreeData 
       { 
        ID = loc.ID, 
        ParentLocationID = loc.ParentLocationID, 
        name = loc.frm_location_level.SystemId.Equals(5) ? loc.frm_location_address.FirstOrDefault(c => !c.Removed && c.Revision == 0).Street1 : loc.Name, 
        Locationlevel = loc.frm_location_level.SystemId, 
        participation = loc.IsActive ? "Yes" : "No", 
       }).ToList(); 

      List<TreeData> Meters = db.frm_connection_meter.Where(x => !x.Removed && x.Revision == 0).Select(l => new TreeData 
      { 
       Locationlevel = 6, 
       ID = l.ID, 
       ParentLocationID = l.frm_location.ID, 
       name = l.MeterNumber, 
       participation = l.IsMain ? "Yes" : "No",// change to IsActive after db update 
      }).ToList(); 


      return Location.AddRange(Meters)); 
     } 
    } 
} 

Если я пытаюсь поставить два списка TreeData вместе сlist.AddRange Не может неявно преобразовать тип «пустоту»

return Location.AddRange(Meters)); 

Я получаю следующее сообщение об ошибке: Не удается неявно преобразовать тип «пустота» в System.Collections.Generic.List

Я знаю, что возвращаемый тип .AddRange недействителен (null) , но как я могу сместить два списка вместе?

ответ

6

List.AddRange не возвращает ничего, так как она изменяет список непосредственно:

Location.AddRange(Meters); 
return Location; 

Если вы не хотите, чтобы изменить его, вы можете использовать LINQ:

return Location.Concat(Meters).ToList(); 

Но тогда я Wouldn» t создать два других списка, это было более эффективно:

public List<TreeData> GetTreeData() 
{ 
    var locations = db.frm_location 
     .Where(x => !x.Removed && x.Revision == 0) 
     .Select(loc => new TreeData 
     { 
      ID = loc.ID, 
      ParentLocationID = loc.ParentLocationID, 
      name = loc.frm_location_level.SystemId.Equals(5) ? loc.frm_location_address.FirstOrDefault(c => !c.Removed && c.Revision == 0).Street1 : loc.Name, 
      Locationlevel = loc.frm_location_level.SystemId, 
      participation = loc.IsActive ? "Yes" : "No", 
     }); 

    var meters = db.frm_connection_meter 
     .Where(x => !x.Removed && x.Revision == 0) 
     .Select(l => new TreeData 
     { 
      Locationlevel = 6, 
      ID = l.ID, 
      ParentLocationID = l.frm_location.ID, 
      name = l.MeterNumber, 
      participation = l.IsMain ? "Yes" : "No",// change to IsActive after db update 
     }); 

    return locations.Concat(meters).ToList(); 
} 
+0

Это сработало спасибо! – user2811133