1

今日書いたコードに問題があります。データベースからいくつかの行を選択し、それらを列の 1 つでグループ化したいと考えています。これは私のコードです:

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' が無効です。列名 'English' が無効です。列名 'English' が無効です。

4

1 に答える 1

0

キー以外の集計情報を引き戻さないため、スタックからデータベースまで IQueryable を使用していると仮定して、Distinct を使用するだけで、グループ化せずにそれを実行できるはずです。

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

それでもエラーが発生する場合は、マッピングとテーブルをチェックして、テーブルの列名が変更されていないことを確認します。

于 2012-09-06T15:43:09.630 に答える