使用from bindingSource3.AddNew();在'<>f__AnonymousType1 ' 2

本文关键字:AnonymousType1 bindingSource3 from AddNew 使用 | 更新日期: 2023-09-27 18:09:01

当我使用以下代码时,出现错误

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

错误: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__AnonymousType1 2[[系统。Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System. int]字符串,mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'如果您设置AllowNew=true并处理AddingNew事件,则类型

使用from bindingSource3.AddNew();在'<>f__AnonymousType1 ' 2

当你的DataSource是一个匿名类型对象的集合时,你不能调用AddNew

所以你必须声明你的自定义类:

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();
相关文章:
  • 没有找到相关文章