【问题标题】:MVC 3 controller GroupBy View errorMVC 3 控制器 GroupBy 查看错误
【发布时间】:2012-10-22 19:02:11
【问题描述】:

我正在从控制器创建一个 MVC 3 视图。我的模型“MyList”,包含大量记录。当我使用以下 linq 语句创建模型时:

var model = _db.MyList.GroupBy(r => r.myKey);

我收到错误消息:“传递到字典中的模型项的类型为 'System.Collections.GenericlList' 1... 但此字典需要一个类型为 'System.Collections.Generic.IEnumerable' 的模型项...

在视图中,我在第一行有以下代码:

@model IEnumerable<MyApp.Models.MyList>

我尝试返回

return View(model.ToList());

来自控制器,但没有喜悦。我错过了什么?

【问题讨论】:

    标签: asp.net-mvc-3 linq


    【解决方案1】:

    model.ToList() 将返回一个List&lt;T&gt;,其中T 是MyList。你的模型类型是直的MyList。如果您上面的var 声明已经返回MyList,只需执行return View(model)

    【讨论】:

    • 感谢您的回复。执行return View(model) 时出现上述错误
    【解决方案2】:

    这个人整个上午都在缠着我。我在以下帖子中找到了我的问题的答案:

    Linq Distinct() by name for populate a dropdown list with name and value

    我基本上返回以下内容:

    public static IEnumberable<MyModel> FindTheKeys(this IQueryable<MyModel> myList)
    {
        return myList.OrderBy(r => r.AreaKey);
    }
    

    然后按照上面帖子中的说明执行选择。

    var model = _db.MyModel.FindTheKeys().GroupBy(r => r.AreaKey).Select(g => g.First());
    

    【讨论】:

      【解决方案3】:

      GroupBy 返回 IGrouping&lt;TKey, TSource&gt; 的集合,而不是 MyList(这很奇怪,您不会有列表的列表。

      无论如何,将GroupBy 转换为列表也没有多大意义。你的意思是OrderBy

      【讨论】:

      • OrderBy 返回太多记录 - GroupBy 返回单个键的子集,例如每个键都有几行。也许我应该在带有 OrderBy 的键上使用 DISTINCT?
      • @souli - 不,Groupby 返回的记录数量相同,但它在多个组中返回。记录的总数应该相同。我不能说使用 Distinct 是否会更好,因为我不知道您的数据模型或您的要求。
      • 谢谢!我想做的只是返回记录的子集。例如,如果我的集合是这样的: -ID SubKey Name Age -1 10 tom 20 -2 10 fred 21 -3 11 sally 30 -4 12 jill 32 我的结果集是 10, 11, 12
      • 抱歉,我正在输入表格数据。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多