在C#中从结构构建逗号分隔的字符串

时间:2010-06-15 13:28:27

标签: c#

我在C#class

中有以下结构
public struct Employee
        {
            public const string EMPID = "EMP_ID";
            public const string FName = "FIRST_NAME";
            public const string LNAME = "LAST_NAME";
            public const string DEPTID = "DEPT_ID";

        }

是否有一种简单的方法来构建字符串,如下所示

const string mainquery="INSERT INTO EMP(EMP_ID,FIRST_NAME,LAST_NAME,DEPT_ID) VALUES(:EMP_ID,:FIRST_NAME,:LAST_NAME,:DEPT_ID)"

而不是如下 然后连接它。

const string EMP_COLS=
                EMPLOYEE.EMPID + "," +
                EMPLOYEE.FNAME + "," +
        EMPLOYEE.LNAME + "," +
                EMPLOYEE.DEPTID;

            const string EMP_Values=
                EMPLOYEE.EMPID + ":" +
                EMPLOYEE.FNAME + ":" +
        EMPLOYEE.LNAME + ":" +
                EMPLOYEE.DEPTID;

6 个答案:

答案 0 :(得分:4)

您可以尝试这样的事情:

StringBuilder sb = new StringBuilder();
var fields = typeof(Employee).GetFields();
for (int i = 0; i < fields.Length; ++i)
{
    sb.Append(fields[i].GetValue(new Employee()));
    if (i < fields.Length - 1)
    {
        sb.Append(',');
    }
}

string result = sb.ToString();
// The above will be "EMP_ID,FIRST_NAME,LAST_NAME,DEPT_ID"

编辑:请注意,上面我假设您usingSystem.Reflection都有System.Text个指令。

答案 1 :(得分:1)

如果struct只保存readonly属性而不是public consts,那么你可以使用Reflection进行。您可以致电Type.GetProperties,循环浏览所有内容并调用它们以获取值并将值插入List<string>,然后将其与string.Join(", ", myList);或其他内容联系起来。
然后,您将字符串的第一部分设为EMP_ID, FIRST_NAME, LAST_NAME, DEPT_ID,并且您需要复制该字符串并根据需要添加:,并且您将拥有这两个部分。

答案 2 :(得分:1)

您可以使用string.Format(string format, object[] arg)方法,如下所示:

string query = string.Format("INSERT INTO EMP({0},{1},{2},{3}) VALUES(:{0},:{1},:{2},:{3})",
                Employee.EMPID,
                Employee.FNAME,
                Employee.LNAME,
                Employee.DEPTID);

希望有所帮助。

答案 3 :(得分:0)

您需要某种映射字典,例如here,或者您可以使用一些ORM工具为您进行映射。

答案 4 :(得分:0)

        string[] values = new[] {
            "EMP_ID",
            "FIRST_NAME",
            "LAST_NAME",
            "DEPT_ID",
        };

        var columns = string.Join(",", values);
        var parameters = ":" + string.Join(",:", values);

        var sql = string.Format("INSERT INTO EMP({0}) VALUES({1})",
            columns,
            parameters);

答案 5 :(得分:0)

string[] cols = typeof(Employee).GetFields()
                 .Select(f => f.GetValue(null).ToString()).ToArray();

Console.WriteLine(string.Format(
      "INSERT INTO EMP({0}) VALUES(:{1})", 
      string.Join(",", cols), 
      string.Join(",:", cols)));