我有必须在哪里根据公式对文本框进行计算。我想知道如何单独获取字段名称和运算符,以便我可以在公式文本框中绑定它。示例:{FieldName1} + {FieldName2} + {Fieldname3}是公式,我想要分别包含大括号的数据,因为它们将分别作为字段名称和 + 符号。我不知道怎么做到这一点。这是我的代码 -
DataTable dt_main = GetTable();
DataTable dt_AutocalculatedColumns = GetCalculatedColumn();
string AutoGeneratedColumnName = string.Empty;
string Formula = string.Empty;
string FLD1 = string.Empty;
string FLD2 = string.Empty;
string FLD3 = string.Empty;
if (dt_AutocalculatedColumns.Rows.Count > 0)
{
foreach (DataRow row_field in dt_AutocalculatedColumns.Rows)
{
AutoGeneratedColumnName = row_field["FieldName"].ToString();
Formula = row_field["AutoCalculatedFormula"].ToString();
string[] words = Formula.Split(' ');
foreach (string Eachword in words)
{
// what to do here i am not getting
}
}
}
protected DataTable GetCalculatedColumn()
{
SqlConnection con= newSqlConnection(ConfigurationManager.ConnectionStrings["ExcelLikeConnnectionString"].ConnectionString);
con.Open();
SqlCommand cmd = new SqlCommand("My Select Query", con);
cmd.CommandType = CommandType.Text;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();
return dt;
}
任何帮助将不胜感激。提前致谢
答案 0 :(得分:1)
如果您仅使用+
运营商,那么您应该拆分它而不是' '
。要确保没有带空格的字段名称,请使用trim。
string[] words = Formula.Split('+');
for (int i = 0; i < words.Length; i++)
{
words[i] = words[i].Trim();
}
当然,在这种情况下,您不能在字段名称中使用+
。
答案 1 :(得分:0)
您也可以使用LINQ:
string formula = "{FieldName1} + {FieldName2}+{Fieldname3}";
string[] words = formula.Split('+')
.Select(w => w.Trim(new char[] {' ', '{', '}'})).ToArray();
这将拆分字符串formula
并修剪每个条目,以便您只剩下字段名称。结果输出将是包含FieldName1
,FieldName2
和FieldName3
的3元素数组。