C# 处理数据选择的特殊字符输入
更新 当“\”是转义帮助程序时,以下四个字符需要转义C# 处理数据选择的特殊字符输入,c#,.net,sql-server,linq,ado.net,C#,.net,Sql Server,Linq,Ado.net,更新 当“\”是转义帮助程序时,以下四个字符需要转义 -像 问题 虽然我搜索了很多,但在堆栈溢出中找不到与以下内容完全匹配的问题 我有一个名为Log\u Description的数据库列。它有两项记录 1) “样本%值记录” 2) “免费样品记录” 我正在使用SQL命令并设置参数,如下所示 commandText = commandText + “Log_Description LIKE @Log_Description”; command.Parameters.AddwithValue(“
commandText = commandText + “Log_Description LIKE @Log_Description”;
command.Parameters.AddwithValue(“@Log_Description”, “%”+obj. LogDescription+”%”);
假设用户输入“%”作为txtLogDescription文本框的搜索参数,我只需要显示第一条记录。但目前它正在显示这两个记录
Collection resultLogs=null;
如果(!String.IsNullOrEmpty(logSearch.LogDescription))
{
resultLogs=新集合();
var results=来自日志中的o,其中o.LogDescription.Contains(logSearch.LogDescription)选择o;
如果(结果!=null)
{
foreach(var登录结果)
{
resultLogs.Add((Log)Log);
}
}
}
其他的
{
结果日志=日志;
}
关于逃逸%
,请参见汤米·格罗夫内斯对问题的评论
如果可以使用列表
而不是集合
(请参阅),则可以更简洁地编写:
var descr = logSearch.logDescription;
var results = (
from o in logs
where String.IsNullOrEmpty(descr) ||
o.LogDescription.Contains(descr)
select o
).ToList();
如果仍然需要集合
,可以将LINQ查询的结果包装到集合构造函数中:
var results = new Collection<Log>((
from o in logs
where String.IsNullOrEmpty(descr) ||
o.LogDescription.Contains(descr)
select o
).ToList());
var结果=新集合((
从日志中的o开始
其中String.IsNullOrEmpty(descr)||
o、 LogDescription.Contains(描述)
选择o
).ToList());
您使用的是什么数据库?SQL Server、Oracle、MySQL?如果您使用的是SQL Server,这里有一个类似的问题,基本上您可以避开搜索值reference中找到的任何百分比
var descr = logSearch.logDescription;
var results = (
from o in logs
where String.IsNullOrEmpty(descr) ||
o.LogDescription.Contains(descr)
select o
).ToList();
var results = new Collection<Log>((
from o in logs
where String.IsNullOrEmpty(descr) ||
o.LogDescription.Contains(descr)
select o
).ToList());