2012-09-06 80 views
1

我有一个代码,我今天写的问题。 我想从数据库中选择一些行并将它们按列之一分组。 这是我的代码:C#Linq“GroupBy”

public class Classes 
{ 
    public IQueryable<ClassData> HomeWorkList { get; set; } 
} 
public class ClassData 
{ 
    public string Name { get; set; } 
    public string English { get; set; } 
} 

var classesCustomViews = new Classes { 
    HomeWorkList = _repositoryClasses.GetRecords() 
     .GroupBy(s => new { s.Name, s.English }) 
     .Select(s => new ClassData 
      { 
       English = s.Key.English, 
       Name = s.Key.Name 
      }) 
    };  
return PartialView(classesCustomViews); 

这是我的错误:

System.Data.SqlClient.SqlException:无效的列名 '英语'。 列名'English'无效。无效的列名称为'英文'。

+0

返回GetRecords()是什么? –

+5

也许没有名为'English'的列? – sloth

+1

另外,如果您正在组队,您将无法在新建 –

回答

0

既然你不拉了回来比你的钥匙其他任何聚合信息,你应该能够通过只用鲜明的假设您正在使用的IQueryable的堆栈工作到数据库中做,而不分组:

var classesCustomViews = new Classes { 
    HomeWorkList = _repositoryClasses.GetRecords() 
     .Select(s => new ClassData 
      { 
       English = s.English, 
       Name = s.Name 
      }) 
     .Distinct() 
    }; 

如果仍然出现错误,我会检查您的映射和表以确保表列名称没有更改。