所以我有以下方法,这是一个查询辅助方法,假设从一个位置找到我所有区域,有155个位置,因此有155个区域,但是,只有4个区域,它们被反复使用从而再创造155个地区。
此代码应执行此操作:Select Distinct from locations.region in locations
因此只返回四个区域。
public static IEnumerable<Location> getDistinctLocations()
{
using (var db = new Context())
{
var locations = (from l in db.Locations
select l.region).Distinct();
return locations.ToList();
}
}
问题是我收到以下错误:
无法隐式转换类型 'System.Collections.Generic.List'到 'System.Collections.Generic.IEnumerable'。 存在显式转换(您是否错过了演员?)
发生在:
return locations.ToList();
那么我如何返回一个IEnuerable对象,以便在我的视图中,我可以遍历返回的位置并将区域移出。
然后在视图中我需要做:
@{
IEnumerable<UFA.Location.Core.Location> locationDistinct = UFALocationApp.Helpers.QueryHelper.getDistinctLocations();
foreach (var item in locationDistinct)
{
<div data-role="collapsible" data-theme="a" data-content-theme="a" data-inset="false">
<h3>@item.region</h3>
<ul data-role="listview">
@{
IEnumerable<UFA.Location.Core.Location> location = UFALocationApp.Helpers.QueryHelper.getAllLocationsForARegion(item.region);
foreach (var loc in location)
{
<li><a href="@Url.Action("Details", "Location", new { id = item.id })" rel="external">@loc.name</a></li>
}
}
</ul>
</div><!-- /collapsible -->
}
}
答案 0 :(得分:0)
您的函数设置为返回IEnumerable of Locations,但实际上您正在返回一个区域列表,这就是失败的原因。
此外,我会尝试使用类似于LocationModel的模型(您可以随意调整模型,然后将其传递给视图):
void Main()
{
public static List<LocationModel> getDistinctLocations()
{
using (var db = new Context())
{
var locations = db.Locations.Select(x=> new LocationModel{
Name = x.Name,
Region = x.Region.Name
}).toList();
return locations.Distinct().ToList();
}
}
}
public class LocationModel
{
public virtual string Name{ get; set;}
public virtual string Region{ get; set;}
}