Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在lambda表达式中插入记录以及缩短代码长度的可能方法_C#_.net_Winforms_Linq_Lambda - Fatal编程技术网

C# 如何在lambda表达式中插入记录以及缩短代码长度的可能方法

C# 如何在lambda表达式中插入记录以及缩短代码长度的可能方法,c#,.net,winforms,linq,lambda,C#,.net,Winforms,Linq,Lambda,或者插入记录列表的新lambda表达式?您可以编写: private void SaveRec01(Logsheet01 Header) { if(Saving == "Logsheet01") { using(DBDatacontex DB = new DBDatacontex) { DB.Logsheet01.InsertOnSubmit(Header); DB.SubmitChange

或者插入记录列表的新lambda表达式?

您可以编写:

private void SaveRec01(Logsheet01 Header)
    {
        if(Saving == "Logsheet01") {
           using(DBDatacontex DB = new DBDatacontex) {
               DB.Logsheet01.InsertOnSubmit(Header);
               DB.SubmitChanges();
               DB.Connection.Close();
           }
        }elseif (Saving == "Logsheet02") {
           using(DBDatacontex DB = new DBDatacontex) {
               DB.Logsheet02.InsertOnSubmit(Header);
               DB.SubmitChanges();
               DB.Connection.Close();
           }
        } //etc..
    }
创建如下函数:

Logsheet01 Header = new Logsheet01({     
  DrNO = drNO.Text,
  DocDate = dtPicker.Value,
  RecNum = RecNum.Value,
  DocuTitle = DocumentHeader.Text  
 });


Header.SaveRecord();

}

如果希望消除重复代码,每次只指定数据库操作的“肉”,可以将所有样板代码移动到一个方法中,该方法接受定义操作变量组件的
操作,如下所示:

private void SaveRecord()

{
         using(DBDatacontex DB = new DBDatacontex) {
         //I used this because the SaveRecord function is in the same class as the object used to create the record
         DB.Delivery_HeaderRECs.InsertOnSubmit(this);
         DB.SubmitChanges(); }


}
//数据库操作的包装器。
private void PerformDB操作和提交(操作)
{
使用(DBDataContext DB=new DBDataContext())
{
//在数据上下文上调用我们的任意操作。
行动(DB);
DB.SubmitChanges();
DB.Connection.Close();
}
}
//对象创建(为了简洁而修改)。
私有void SaveNewLogsheet01Record()
{
Logsheet01标题=新的Logsheet01();
//在这里填写标题属性。
PerformDbOperationAndSubmit(dx=>dx.Delivery\u HeaderRECs.InsertOnSubmit(Header));
}
私有void SaveNewLogsheet02Record()
{
Logsheet02 Details=新的Logsheet02();
//在此处填写详细信息属性。
PerformDB操作和提交(dx=>dx.Logsheet0.InsertOnSubmit(详细信息));
}
private void SaveRecord()

{
         using(DBDatacontex DB = new DBDatacontex) {
         //I used this because the SaveRecord function is in the same class as the object used to create the record
         DB.Delivery_HeaderRECs.InsertOnSubmit(this);
         DB.SubmitChanges(); }


}
// Wrapper for our database operation.
private void PerformDbOperationAndSubmit(Action<DBDataContext> action)
{
    using (DBDataContext DB = new DBDataContext()) 
    {
        // Invoke our arbitrary action over the data context.
        action(DB);

        DB.SubmitChanges();
        DB.Connection.Close();
    }
}

// Object creation (modified for the sake of brevity).
private void SaveNewLogsheet01Record()
{
    Logsheet01 Header = new Logsheet01();

    // Fill Header properties here.

    PerformDbOperationAndSubmit(dx => dx.Delivery_HeaderRECs.InsertOnSubmit(Header));                    
}

private void SaveNewLogsheet02Record()
{
    Logsheet02 Details = new Logsheet02();

    // Fill Details properties here.

    PerformDbOperationAndSubmit(dx => dx.Logsheet0.InsertOnSubmit(Details));                     
}