Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 处理数据选择的特殊字符输入_C#_.net_Sql Server_Linq_Ado.net - Fatal编程技术网

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(“

更新

当“\”是转义帮助程序时,以下四个字符需要转义

  • -像
  • 问题

    虽然我搜索了很多,但在堆栈溢出中找不到与以下内容完全匹配的问题

    我有一个名为Log\u Description的数据库列。它有两项记录

    1) “样本%值记录”

    2) “免费样品记录”

    我正在使用SQL命令并设置参数,如下所示

    commandText = commandText + “Log_Description LIKE @Log_Description”;
    command.Parameters.AddwithValue(“@Log_Description”, “%”+obj. LogDescription+”%”); 
    
    假设用户输入“%”作为txtLogDescription文本框的搜索参数,我只需要显示第一条记录。但目前它正在显示这两个记录

  • 克服这一问题的可能方法是什么
  • 可能导致上述代码出现此类问题的其他字符有哪些
  • 注意:我不能阻止用户输入“%”

    注意:我使用SQL Server作为数据库

    编辑

    我现在使用的解决方案是

    LINQ方法(性能命中)如下

    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());