0

したがって、次のメソッドがあります。これは、ある場所からすべての地域を見つけると想定されるクエリ ヘルパー メソッドです。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 -->
    }
}
4

1 に答える 1

0

関数は Locations の IEnumerable を返すように設定されていますが、実際には地域のリストを返しているため、失敗しています。

また、たとえば 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;}

}
于 2013-05-10T17:16:24.323 に答える