list.AddRange 无法隐式转换类型 'void'
list.AddRange Cannot implicitly convert type 'void'
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 的两个列表与
return Location.AddRange(Meters));
我收到以下错误:
无法将类型 'void' 隐式转换为 System.Collections.Generic.List
我知道 the.AddRange 的 return 类型是 void(null)
但我怎样才能将这两个列表放在一起?
List.AddRange
没有 return 任何东西,因为它直接修改了列表:
Location.AddRange(Meters);
return Location;
如果你不想修改它,你可以使用 LINQ:
return Location.Concat(Meters).ToList();
但是我不会创建其他两个列表,这样效率更高:
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();
}
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 的两个列表与
return Location.AddRange(Meters));
我收到以下错误: 无法将类型 'void' 隐式转换为 System.Collections.Generic.List
我知道 the.AddRange 的 return 类型是 void(null) 但我怎样才能将这两个列表放在一起?
List.AddRange
没有 return 任何东西,因为它直接修改了列表:
Location.AddRange(Meters);
return Location;
如果你不想修改它,你可以使用 LINQ:
return Location.Concat(Meters).ToList();
但是我不会创建其他两个列表,这样效率更高:
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();
}