首页 > 其他分享 >DataTable DataRow String Tips...

DataTable DataRow String Tips...

时间:2023-06-09 17:02:46浏览次数:40  
标签:... string StringComparison 单引号 filter DataRow Tips datatable Select



    与datatable奋战了一天,记录一下。。。
   
    1. 查看得到的 datatable 是否为空 datatable.Rows.Count
    2. 查看得到的 DataRow[] 是否为空,可用 DataRow.Length
    3. DataTable 在进行select的时候,默认是 CaseSensitive 为 false
    4. string.IndexOf 默认是区分大小写的   
    可以通过参数 System.StringComparison.OrdinalIgnoreCase ,忽略大小写
    另有System.StringComparison.CurrentCultureIgnoreCase等

you could use IndexOf() and pass StringComparison.OrdinalIgnoreCase

string title = "STRING";
bool contains = title.IndexOf("string", StringComparison.OrdinalIgnoreCase) >= 0;

Even better is defining a new extension method for string

public static bool Contains(this string source, string toCheck, StringComparison comp) {
  return source.IndexOf(toCheck, comp) >= 0;
}

string title = "STRING";
bool contains = title.Contains("string", StringComparison.OrdinalIgnoreCase);



另一个解决方案:


bool contains = Regex.Match("StRiNG to search", "string", RegexOptions.IgnoreCase).Success;

   

2012-2-6 17:32:24 PM IS212


    5. 在 datatable 上使用通配符



myDataTable.Select( "Title   like   '*Professional* ' ") 

    或者myDataTable.Select( "Title   like   '%Professional% ' ")

   6. 在使用Select方法或DataView的时候,一定要注意把字符条件值的一个单引号改成两个单引号,执行


str = str.Replace("'","''");!!




用DataTable.Select(string)或给DataView.RowFilter设置Expression表达式时,由于Expression是字符串拼接而成的,因为跟SQL语句也要注意单引号问题.如这个的查询会导致异常的发生:

DataTable DataRow String Tips..._dataset


DataRow[] m_drResult  =  dt.Select( " name = 'name's' " ); 解决办法是将一个单引号变成两个(跟SQL语法是一样的).


DataRow[] m_drResult  
  = 
   m_dtSource.Select( 
  " 
  name = 'name''s' 
  " 
  ) 

2012-2-7 13:52:53 PM IS2120


   一个解决方法



看到§猪阿不猪§提到一个DataTable.Select的注意事项: 注意去掉不正确的单引号.


平时项目中,我们一般是直接在写filter语句时这样写


theName = theName.Replace("'","''");

string filter = string.Format("Name = '{0}'", theName);


不过有时候也比较麻烦, 如果你的filter里面code的值一多,处理起来就比较烦.


针对这个问题,以前写了一个专门的replace函数(vb.net),能够智能替换filter中不正确的单引号,并保留正确的单引号.


比如有语句: filter  = "Name = 'theN'ame' AND Code = 'd'd'", 把整个filter经过处理之后,得到"Name = 'theN''ame' AND Code = 'd''d'"


不过这个版本的算法比较粗糙 (特别时在处理Like, IN关键字的时候, 实在是恶心的代码 -_-bb) 不过暂时能应付项目的要求,  当然Unit Test也是必不可少的. 


大家可以看看,也欢迎提出更好的算法 :)


源代码和Unit Test 代码在这里.(updated: 2005/9/23: fixed some bugs)


最后废话一句: 用Dataset就是麻烦...



7. 向datatable添加 datarow


8. 向一个表(dstTB)加入一行已属于另一个table(srcDT)的一个datarow时使用 ImportRow

NorthwindDataSet.CustomersRow newCustomersRow = 

     northwindDataSet1.Customers.NewCustomersRow(); 


 newCustomersRow.CustomerID = "ALFKI"; 

 newCustomersRow.CompanyName = "Alfreds Futterkiste"; 


 northwindDataSet1.Customers.Rows.Add(newCustomersRow); 


 //z 2012-3-27 15:57:39 PM IS212


This row already belongs to another table.



9. .net 4 中添加了这个类 System.Runtime.Caching.MemoryCache ,可以用来做cache

标签:...,string,StringComparison,单引号,filter,DataRow,Tips,datatable,Select
From: https://blog.51cto.com/u_16156420/6449444

相关文章

  • oracle 之存储过程 begin ...... ; ...... end
    点击查看代码beginmergeintoly_yjs_hxsj.T_XSGL_XSXX_CZRZrzusing(selecta.XS_IDxsid,xh,xm,'02'asbglx,'修改学生:'||xm||':学位操作撤销学位证书号,原学位证书号:'||BJYZSBH||'改为:'||a.JYZSHasbgnr,#{editor}asczrzh......
  • typescript中,...是什么符号?
    在TypeScript中,...是扩展操作符(SpreadOperator)和剩余操作符(RestOperator)的语法表示形式。1.扩展操作符(SpreadOperator):用于将数组和对象自动展开并构建可迭代的值列表。语法为"...",通常用在函数调用参数中。例如:constarr1=[1,2,3];constarr2=[4,5,6];constm......
  • 看了5000多篇公众号文章后,我总结出这些...
    看到有名的或者原创多的公众号我基本上都会关注,慢慢的,前段时间发现我竟然关注了406个公众号,技术类肯定是300+。我都惊呆了!居然关注了406个。你们呢?回去翻翻关注了几个,多关注几个收获更多~我有一个习惯,就是每天早上和晚上我都会阅读一些公众号的文章,慢慢的发现个问题相似的标题却是......
  • 元宵节前,老铁通宵加班,直言肺都快气炸了!只因为...
    看下面聊天记录:看到这,相信大家都明白了。这个小白一顿猛如虎的rm-rf操作,直接把整个项目给整没了~他是手残不小心,但是大家就得跟着受累了……所以说,熟悉Linux命令也是java开发者的必备技能之一!尤其是在测试环境、线上环境中,如果搞不懂Linux相关命令,不仅容易遭同事们的鄙视,还会给领导......
  • 谈谈我对程序员35岁问题的一些看法...
    说到当程序员,我想想每一代人,不同行业,不同年龄段的人,对程序员都会有自己的看法,结合我自身的以及周围人的感觉,以及现如今各大自媒体平台的推广,我们先来看看,现在对“程序员”全体的主要认知:说到当程序员,我想想每一代人,不同行业,不同年龄段的人,对程序员都会有自己的看法,结合我自身的以及......
  • 硕士毕业半年,选择社招了...
    大家好,我是千与千寻,最近开始玩知乎了图片以下是我的知乎:https://www.zhihu.com/people/qian-yu-qian-xun-92-82在上周回答了一个问题:关于计算机与电气专业的选择?我写了一篇回答,收到了不少积极的反响,感觉知乎真的不错,接下来好好建设一下知乎的生态环境,也欢迎大家来一个一键三连!(以......
  • jquery:TypeError: $(...).on is not a function
    当发生错误TypeError:$(...).onisnotafunction时,当不存在javascript类冲突的前提下,考虑是否是因为jquery版本过低! 参考:http://stackoverflow.com/questions/15670352/typeerror-on-is-not-a-functionhttp://stackoverflow.com/questions/18958775/typeerror-jquery-on-is-n......
  • 202306062001-《远程Linux服务器——安装tomcat8、jdk1.8、mysql5——mysql 用sql建表
    因createtable...提示格式错误,什么NAME啊...,必查了一下,要设置,好多条语句(5条左右),是设置格式的。 但设置完了,说重启mysql,就失效,要重新设置(5条sql重新执行一遍!) 永久有效的解决办法是:修改“my.cnf”,我的修改如下:[client]default-character-set=utf8[mysql]default-......
  • 一个整数数组里面,除了两个数之外,其他的数字都出现了两次,写一个程序找出这两个数...
    一个整数数组里面,除了两个数之外,其他的数字都出现了两次,写一个程序找出这两个数,要求算法的时间复杂度为O(n). n为数组的长度。  程序代码如下: //取二进制中首个为1的位置intfindFirstOne(intvalue){intpos=0;while((value&1)!=1){value=value>>1;pos++;......
  • 【HarmonyOS】关于 Caused by java.lang.IllegalStateException The specified...
    【问题描述】线上收到大量手机的崩溃异常,以华为手机为主,崩溃如下1.Causedby:java.lang.IllegalStateException:Thespecifiedmessagequeuesynchronizationbarriertokenhasnotbeenpostedorhasalreadybeenremoved.2.atandroid.os.MessageQueue.removeSyncBarri......