【问题标题】:Entity Framework Query - Get distinct region from location实体框架查询 - 从位置获取不同的区域
【发布时间】:2013-05-10 16:01:05
【问题描述】:

所以我有以下方法,它是一个查询帮助方法,假设从一个位置找到我的所有区域,有 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 -->
    }
}

【问题讨论】:

    标签: sql entity-framework asp.net-mvc-4


    【解决方案1】:

    您的函数设置为返回一个 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;}
    
    }
    

    【讨论】:

      猜你喜欢
      • 2011-06-30
      • 1970-01-01
      • 2014-01-25
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-21
      相关资源
      最近更新 更多