LINQ Group错误:“不包含'GroupBy'的定义”

时间:2012-10-26 19:54:05

标签: c# linq

我有一个我需要分组的列表。在列表中我添加了这个对象:

private class MyObject {

        private System.Drawing.Color color;
        private string title;            

        public MyObject(System.Drawing.Color color, string title)
        {
            this.color = color;
            this.title = title;
        }

        public string Title
        {
            get { return title; }
            set { title = value; }
        }

        public System.Drawing.Color Color
        {
            get { return color; }
            set { color = value; }
        }

}

我将我的列表创建为:

System.Collections.Generic.List<MyObject> mList = new       System.Collections.Generic.List<MyObject >();

然后我尝试对内容进行分组:

var groupedList = mList.GroupBy(c => new {c.Title} ).ToList();

那是我收到错误的时候。有任何想法吗?我怎样才能做到这一点? 谢谢!

3 个答案:

答案 0 :(得分:11)

这类错误通常意味着您未在使用列表中添加System.Linq。尝试将其放在代码文件的顶部:

using System.Linq;

答案 1 :(得分:3)

您是否有对System.Linq命名空间的引用?

答案 2 :(得分:3)

您需要将using System.Linq添加到文件名的顶部或内部。

GroupBy实际上不是List类的方法,它是System.Linq中定义的扩展方法。当您向该命名空间添加using语句时,它允许该命名空间中的所有扩展方法解析为using所在文件扩展的任何类型。

一些不相关的说明:

  1. 您可能还想在该文件的顶部添加using System.Collections.Generic以及其他几个常用命名空间,可能还有其他大多数命名空间。打字System.Collections.Generic.List<MyObject> mList = new System.Collections.Generic.List<MyObject >();只会让我感到畏缩。添加using后,您只需:List<MyObject> mList = new List<MyObjecT>();
  2. 您可能不希望为分组创建新的匿名类。它会起作用,但它会使得使用更加烦人的结果而不添加任何有用的东西。如果您只想对mList.GroupBy(c => c.Title )进行分组,请执行:Title