/// <summary>
/// <para>If a pattern in a LIKE clause contains any of these special characters * % [ ], those characters must be escaped in brackets [ ] like this [*], [%], [[] or []].</para>
/// <para>If the pattern is not in a like clause then you can pass valueIsForLIKEcomparison = false to not escape brackets.</para>
/// <para>Examples:</para>
/// <para>- strFilter = "[Something] LIKE '%" + DataTableHelper.EscapeLikeValue(filterValue) + "%'";</para>
/// <para></para>
/// <para>http://www.csharp-examples.net/dataview-rowfilter/</para>
/// </summary>
/// <param name="filterValue">LIKE filterValue. This should not be the entire filter string... just the part that is being compared.</param>
/// <param name="valueIsForLIKEcomparison">Whether or not the filterValue is being used in a LIKE comparison.</param>
/// <returns></returns>
public static string EscapeFilterValue(string filterValue, bool valueIsForLIKEcomparison = true)
{
string lb = "~~LeftBracket~~";
string rb = "~~RightBracket~~";
filterValue = filterValue.Replace("[", lb).Replace("]", rb).Replace("*", "[*]").Replace("%", "[%]").Replace("'", "''");
if (valueIsForLIKEcomparison)
{
filterValue = filterValue.Replace(lb, "[").Replace(rb, "]");
}
else
{
filterValue = filterValue.Replace(lb, "[[]").Replace(rb, "[]]");
}
return filterValue;
}
Tôi cũng phải đối mặt với cùng một vấn đề, trong trường hợp của tôi, tôi chỉ muốn kiểm tra rằng bất kỳ hàng tồn tại với tên được đặt do đó, tôi đã được sử dụng LINQ cho việc này. 'Data.AsEnumerable(). Ở đâu (hàng => Convert.ToString (hàng [" Tên "]). ToLower(). Bằng (newName.ToLower())).()' – Nilay