1

ASP.NET MVC4 (Razor View Engine) VS 2012 プロジェクトでのグループ化に問題があります。Entity Framework を使用しています。私のコードは以下の通りです:

助けてくれてありがとう。

エラーが発生しています

Unable to cast object of type 'Grouping[System.String,MyProject.ViewModels.MyViewModel+MyClassData]' to type 'MyClassData'.

私のクラス

    public class MyClassData
    {
       public int? Id { get; set; }
       public int? ParentId { get; set; }
       public string Title { get; set; }   
    }

    private readonly List<MyClassData> mData = new List<MyClassData>();


    public List<MyClassData> SpecData
    {
      get { return mData; }
    }


    IEnumerable<IGrouping<string, MyClassData>>
    query = (from t in db.MydbProcedure(temp)
                       select new MyClassData
                       {
                          Id = t.Id,
                          ParentId = t.ParentId,
                          Title = t.Title
                       }).OrderBy(x =>x.Id).GroupBy(y => y.Title);

  List<IGrouping<string, MyClassData>> mSpec = query.ToList();

            mData .Clear();
            mSpec.ForEach(b =>
            {
                if (b != null)
                    mData.Add((MyClassData)b);
            });
4

2 に答える 2

1

コードを確認できませんが、次のコードが役立つと思います。

List<IGrouping<string, MyClassData>> query = new List<MyClassData>()
    .GroupBy(it => it.Title)
    .ToList();

List<MyClassData> mData = query
    .Where(b => b != null)
    .SelectMany(it => it)
    .ToList();

同じ結果を得るには、クエリにWhereand句を追加するだけです。SelectMany

Whereコードで句が本当に必要かどうかはわかりません。

次のようにも書けると思います。

List<MyClassData> mData = (from t in db.MydbProcedure(temp)
                            select new MyClassData
                            {
                                Id = t.Id,
                                ParentId = t.ParentId,
                                Title = t.Title
                            })
    .OrderBy(it => it.Id)
    .GroupBy(it => it.Title)
    .Where(b => b != null)
    .SelectMany(it => it)
    .ToList();
于 2013-11-04T23:44:02.673 に答える