したがって、次のメソッドがあります。これは、ある場所からすべての地域を見つけると想定されるクエリ ヘルパー メソッドです。155 の場所があるため、155 の地域がありますが、4 つの地域しかなく、何度も何度も使用されます。したがって、155 の領域を作成します。
このコードは、これを行う必要があります。Select Distinct from locations.region in locations
したがって、4 つの地域のみが返されます。
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 -->
}
}