C# 如何在lambda表达式中插入记录以及缩短代码长度的可能方法
或者插入记录列表的新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
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));
}