2

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

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();

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

4

3 回答 3

16

这些类型的错误通常意味着您没有包括System.Linq在您的使用列表中。尝试将其放在代码文件的顶部:

using System.Linq;

于 2012-10-26T19:58:36.213 回答
4

你有对 System.Linq 命名空间的引用吗?

于 2012-10-26T19:58:44.940 回答
4

您需要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.
于 2012-10-26T19:59:36.473 回答