0

次のコードを使用すると、エラーが発生します

testtelContext db = new testtelContext();
        var qry = (from p in db.firstlasts
                              join i in db.firstnames
                                  on p.Idfname equals i.Idfname
                              select new 
                              {
                                  id = p.idfl,
                                  name = i.fname

                              }).ToList();
        bindingSource3.DataSource = qry;

        dataGridView5.DataSource = bindingSource3;
        bindingSource3.AddNew(); 

使用のエラー bindingSource3.AddNew();

エラー: '<>f__AnonymousType1 2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' type. This type does not have a public default constructor. You can call AddNew on the '<>f__AnonymousType12[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture] でAddNew を呼び出すことはできません=neutral, PublicKeyToken=b77a5c561934e089]]' AllowNew=true を設定し、AddingNew イベントを処理する場合はタイプします。

4

1 に答える 1

1

Anonymous Type オブジェクトのコレクションのAddNew場合は呼び出すことができません。DataSource

したがって、カスタム クラスを宣言する必要があります。

public class BindingItem
{
    public int id { get; set;}
    public string name { get; set; }
}

そして、匿名オブジェクトではなく、そのオブジェクトのコレクションを返すようにクエリを変更します。

var qry = (from p in db.firstlasts
           join i in db.firstnames on p.Idfname equals i.Idfname
           select new BindingItem 
           {
               id = p.idfl,
               name = i.fname
           }).ToList();
于 2013-04-14T21:00:39.340 に答える