![](/img/trans.png)
[英]Cannot Implicitly convert type 'System.Collections.Generic.list<fooClass>' to 'System.Collections.Generic.List<T>
[英]How to fix 'Cannot implicitly convert type System.Collections.Generic.List<> to System.Collections.Generic.List<>'
谁能告诉我为什么我无法在GetWorkOrdersByLocation中返回workOrders? 这是我的控制器:
public IActionResult Index()
{
return View();
}
public IActionResult Privacy()
{
return View();
}
public IActionResult WorkOrders()
{
GetWorkOrders();
return View();
}
public IActionResult GetWorkOrders()
{
List<WorkOrder> workOrders = new List<WorkOrder> ();
workOrders.Add(new WorkOrder { UserId = 1, LocationId =
"Philadelphia", Date = DateTime.Now, Reason = "Lights", IsActive =
true });
workOrders.Add(new WorkOrder { UserId = 2, LocationId = "Camden",
Date = DateTime.MinValue, Reason = "Plumbing", IsActive = true });
workOrders.Add(new WorkOrder { UserId = 3, LocationId =
"Burlington", Date = DateTime.Now, Reason = "Water", IsActive =
false });
workOrders.Add(new WorkOrder { UserId = 4, LocationId =
"Wilmington", Date = DateTime.MaxValue, Reason = "Lights", IsActive
= true }); return View(workOrders);
}
public IActionResult GetWorkOrdersByLocation()
{
List<WorkOrder> workOrders = new List<WorkOrder>();
workOrders = workOrders.Select(x => x.LocationId).ToList();
return workOrders;
}
我在return语句return workOrders上遇到错误。 我不确定为什么这行不通。 我从模型类WorkOrder中创建列表WorkOrder的新实例。 现在,我试图列出所有位置。
您的代码有几个问题:
GetWorkOrdersByLocation
您定义了一个List<WorkOrder> workOrders
并尝试为其分配一个List<string>
因为LocationId
的类型为string。 GetWorkOrdersByLocation
您只有一个空的workOrders列表,因此对它的任何选择也将返回空。 WorkOrders
似乎类似于GetWorkOrdersByLocation
,但是创建了一个不提供任何数据的View,因为尽管您调用GetWorkOrdersByLocation
,但是它返回的内容却不做任何事情。 GetWorkOrdersByLocation
的命名与您返回工作订单位置而不是按位置(按顺序排序/分组)的工作看上去并不完全匹配。 通常,您需要一种提供数据的方法。 GetWorkOrders
似乎可以做到这一点,但是您返回一个View,而不是数据。 此方法应仅返回列表,然后由WorkOrders
和GetWorkOrdersByLocation
。
public IActionResult WorkOrders()
{
// get the work order list and return a view on it
return View(GetWorkOrders());
}
private List<WorkOrder> GetWorkOrders()
{
List<WorkOrder> workOrders = new List<WorkOrder> ();
workOrders.Add(new WorkOrder { UserId = 1, LocationId =
"Philadelphia", Date = DateTime.Now, Reason = "Lights", IsActive =
true });
workOrders.Add(new WorkOrder { UserId = 2, LocationId = "Camden",
Date = DateTime.MinValue, Reason = "Plumbing", IsActive = true });
workOrders.Add(new WorkOrder { UserId = 3, LocationId =
"Burlington", Date = DateTime.Now, Reason = "Water", IsActive =
false });
workOrders.Add(new WorkOrder { UserId = 4, LocationId =
"Wilmington", Date = DateTime.MaxValue, Reason = "Lights", IsActive
= true });
// return the work orders to be used by your view methods
return workOrders;
}
public IActionResult GetWorkOrdersByLocation()
{
// get your work order list and extract all locations
var locations = GetWorkOrders().Select(x => x.LocationId).ToList();
// return view on all locations
return View(locations);
}
如果希望最后一种方法返回按位置排序的所有工作单的视图,请执行以下操作:
public IActionResult GetWorkOrdersByLocation()
{
// get your work order list and sort by location
var sortedByLocation = GetWorkOrders().OrderBy(x => x.LocationId).ToList();
// return view on all sorted work orders
return View(sortedByLocation);
}
GetWorkOrdersByLocation()
实际上没有从任何地方获取任何workOrders
,它只有一个空的List<WorkOrder>();
-也许调用某个东西(一个私有的?),该东西从某个地方获取一些东西,然后return View (workOrders);
我从示例中剪切了一些代码,仅关注请求。
private List<WorkOrder> CreateWorkOrders()
{
List<WorkOrder> workOrders = new List<WorkOrder> ();
workOrders.Add(new WorkOrder { UserId = 1, LocationId =
"Philadelphia", Date = DateTime.Now, Reason = "Lights", IsActive =
true });
workOrders.Add(new WorkOrder { UserId = 2, LocationId = "Camden",
Date = DateTime.MinValue, Reason = "Plumbing", IsActive = true });
workOrders.Add(new WorkOrder { UserId = 3, LocationId =
"Burlington", Date = DateTime.Now, Reason = "Water", IsActive =
false });
workOrders.Add(new WorkOrder { UserId = 4, LocationId =
"Wilmington", Date = DateTime.MaxValue, Reason = "Lights", IsActive
= true });
return workOrders;
}
public IActionResult GetWorkOrdersByLocation(string locationid)
{
var workOrders CreateWorkOrders();
locationWorkOrders = workOrders.Where(x => x.LocationId == locationid).ToList();
return View(locationWorkOrders);
}
来自评论的问题:“成为列表”是List<string>
在这种情况下是一种方法。 您可能还会为您的位置创建一个类,因为这些位置通常是带有ID,短名称(如州缩写),长名称,描述等的单独对象,并带有适当的命名属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.