如何在 C# 上定义像 StringBuilder.Appand() 这样的自定义函数
How to define custom function like StringBuilder.Appand() on C#
我想做一个像这样传递两个参数的函数
myClass mc=new myClass();
mc.values("string_col1","string_val1");
mc.values("string_col2","string_val2");
我正在单独 class 通过存储过程在数据库中插入值,我的功能是
public void sp_insert(string pro_name, string pro_val)
{
cnnction.Open();
cm.CommandText = pro_name;
cm.Connection = cnnction;
cm.CommandType = CommandType.StoredProcedure;
string[] name = pro_val.Split('|');
for (int i = 0; i < name.Length; i++)
{
string[] var = name[i].Split(',');
cm.Parameters.AddWithValue(var[0], var[1]);
}
cm.ExecuteNonQuery();
cnnction.Close();
}`
现在当我调用这个方法时我想要这个
sp_insert("procedure_name",mc);
以前我是这样工作的
sp_insert("procedure_name","@col1,value1|@col2,value2")
我知道这是最糟糕的作品@或|请帮忙
就像@Daniel 说的,你可以使用Dictionary
。
将 sp_insert
方法更改为:
public void sp_insert(string pro_name, Dictionary<string,string> pro_val)
{
cnnction.Open();
cm.CommandText = pro_name;
cm.Connection = cnnction;
cm.CommandType = CommandType.StoredProcedure;
foreach (var item in pro_val)
{
cm.Parameters.AddWithValue(item.Key, item.Value);
}
cm.ExecuteNonQuery();
cnnction.Close();
}
然后在您调用此方法的任何地方,将此字典传递给它
Dictionary<string,string> var = new Dictionary<string, string>();
var.Add("@param1","paramValue1");
var.Add("@param2", "paramValue2");
您可能正在寻找 params 关键字:
https://msdn.microsoft.com/en-us/library/w5zay9db.aspx
public void sp_insert(string pro_name, params string[] pro_val)
{
for (int i = 0; i < pro_val.Length; i++)
{
Console.Write(pro_val[i] + " ");
}
`enter code here`[...]
}
您可能还想创建一个 class 来包装这些值:
public class ColValueWrap
{
public string Col { get; set;}
public string Val { get; set; }
public ColValueWrap(string col, string val)
{
Col = col;
Val = val;
}
}
所以你可以这样使用它:
public void sp_insert(string pro_name, params ColValueWrap[] pro_vals)
{
foreach (var val in pro_vals)
{
Console.WriteLine(val.Col + ":" + val.Val);
}
`enter more code here`[...]
}
sp_insert("procedure_name",new ColValueWrap("@col1", "val1"), new ColValueWrap("@col2", "val2"));
我想做一个像这样传递两个参数的函数
myClass mc=new myClass();
mc.values("string_col1","string_val1");
mc.values("string_col2","string_val2");
我正在单独 class 通过存储过程在数据库中插入值,我的功能是
public void sp_insert(string pro_name, string pro_val)
{
cnnction.Open();
cm.CommandText = pro_name;
cm.Connection = cnnction;
cm.CommandType = CommandType.StoredProcedure;
string[] name = pro_val.Split('|');
for (int i = 0; i < name.Length; i++)
{
string[] var = name[i].Split(',');
cm.Parameters.AddWithValue(var[0], var[1]);
}
cm.ExecuteNonQuery();
cnnction.Close();
}`
现在当我调用这个方法时我想要这个
sp_insert("procedure_name",mc);
以前我是这样工作的
sp_insert("procedure_name","@col1,value1|@col2,value2")
我知道这是最糟糕的作品@或|请帮忙
就像@Daniel 说的,你可以使用Dictionary
。
将 sp_insert
方法更改为:
public void sp_insert(string pro_name, Dictionary<string,string> pro_val)
{
cnnction.Open();
cm.CommandText = pro_name;
cm.Connection = cnnction;
cm.CommandType = CommandType.StoredProcedure;
foreach (var item in pro_val)
{
cm.Parameters.AddWithValue(item.Key, item.Value);
}
cm.ExecuteNonQuery();
cnnction.Close();
}
然后在您调用此方法的任何地方,将此字典传递给它
Dictionary<string,string> var = new Dictionary<string, string>();
var.Add("@param1","paramValue1");
var.Add("@param2", "paramValue2");
您可能正在寻找 params 关键字: https://msdn.microsoft.com/en-us/library/w5zay9db.aspx
public void sp_insert(string pro_name, params string[] pro_val)
{
for (int i = 0; i < pro_val.Length; i++)
{
Console.Write(pro_val[i] + " ");
}
`enter code here`[...]
}
您可能还想创建一个 class 来包装这些值:
public class ColValueWrap
{
public string Col { get; set;}
public string Val { get; set; }
public ColValueWrap(string col, string val)
{
Col = col;
Val = val;
}
}
所以你可以这样使用它:
public void sp_insert(string pro_name, params ColValueWrap[] pro_vals)
{
foreach (var val in pro_vals)
{
Console.WriteLine(val.Col + ":" + val.Val);
}
`enter more code here`[...]
}
sp_insert("procedure_name",new ColValueWrap("@col1", "val1"), new ColValueWrap("@col2", "val2"));