C# 字符串连接
C# String Concatenation
帮助我解决 C# 中的这个问题,我正在尝试优化我的 gridview 的搜索,这是我的代码,我希望用户能够在文本框中使用这种格式搜索值。 (名称,描述)例如。 Food, Ice Cream,然后它会过滤所有带有冰淇淋描述的食物。谢谢
((DataTable) gridTestCodes.DataSource).DefaultView.RowFilter =
string.Concat("name like '%{0}% + description + '%{0}%'",
txtSearch.Text.Trim().Replace("'", "''"));
您正在使用 concat
代替 format
。另外,你的查询是错误的。您使用的是 +
而不是 AND
,第一个 '%{0}%
后缺少一个单引号,并且 description + '%{0}%'
没有意义。试试这个:
((DataTable)gridTestCodes.DataSource).DefaultView.RowFilter =
string.Format("name like '%{0}%' AND description like '%{0}%'",
txtSearch.Text.Trim().Replace("'", "''"));
或者尝试先查询名称,然后在成功后添加描述(.Replace
也应该一起删除引号吗?):
((DataTable)gridTestCodes.DataSource).DefaultView.RowFilter =
string.Format("name like '%{0}%'", txtSearch.Text.Trim().Replace("'", string.empty));
编辑:
如果你想输入名称然后用逗号分隔的描述试试:
var name = txtSearch.Text.Split(',')[0].Trim().Replace("'", string.empty);
var description = txtSearch.Text.Split(',')[1].Trim().Replace("'", string.empty);
((DataTable) gridTestCodes.DataSource).DefaultView.RowFilter =
string.Format("name like '%{0}%' AND description like '%{1}%'", name, description);
请注意,如果输入字符串不包含逗号,上述代码将抛出异常。所以你可能想为此添加一个检查。
看来您需要改用 string.Format
。 string.Concat
只是连接字符串,不会格式化它们。
而且您的表达式语法似乎不正确。在您的第一个 {0}
之后您还需要一个单引号,并且您需要在您的条件之间使用 AND
或 OR
。
string.Format("name like '%{0}%' AND description like '%{0}%'",
txtSearch.Text.Trim().Replace("'", "''"));
帮助我解决 C# 中的这个问题,我正在尝试优化我的 gridview 的搜索,这是我的代码,我希望用户能够在文本框中使用这种格式搜索值。 (名称,描述)例如。 Food, Ice Cream,然后它会过滤所有带有冰淇淋描述的食物。谢谢
((DataTable) gridTestCodes.DataSource).DefaultView.RowFilter =
string.Concat("name like '%{0}% + description + '%{0}%'",
txtSearch.Text.Trim().Replace("'", "''"));
您正在使用 concat
代替 format
。另外,你的查询是错误的。您使用的是 +
而不是 AND
,第一个 '%{0}%
后缺少一个单引号,并且 description + '%{0}%'
没有意义。试试这个:
((DataTable)gridTestCodes.DataSource).DefaultView.RowFilter =
string.Format("name like '%{0}%' AND description like '%{0}%'",
txtSearch.Text.Trim().Replace("'", "''"));
或者尝试先查询名称,然后在成功后添加描述(.Replace
也应该一起删除引号吗?):
((DataTable)gridTestCodes.DataSource).DefaultView.RowFilter =
string.Format("name like '%{0}%'", txtSearch.Text.Trim().Replace("'", string.empty));
编辑:
如果你想输入名称然后用逗号分隔的描述试试:
var name = txtSearch.Text.Split(',')[0].Trim().Replace("'", string.empty);
var description = txtSearch.Text.Split(',')[1].Trim().Replace("'", string.empty);
((DataTable) gridTestCodes.DataSource).DefaultView.RowFilter =
string.Format("name like '%{0}%' AND description like '%{1}%'", name, description);
请注意,如果输入字符串不包含逗号,上述代码将抛出异常。所以你可能想为此添加一个检查。
看来您需要改用 string.Format
。 string.Concat
只是连接字符串,不会格式化它们。
而且您的表达式语法似乎不正确。在您的第一个 {0}
之后您还需要一个单引号,并且您需要在您的条件之间使用 AND
或 OR
。
string.Format("name like '%{0}%' AND description like '%{0}%'",
txtSearch.Text.Trim().Replace("'", "''"));