C# 如何在datatable中显示区分大小写的内容

C# 如何在datatable中显示区分大小写的内容,c#,datatable,C#,Datatable,我将一些来自xml的值放在datatable中,我有重复的值,还有一些值区分大小写 例:猫,大象,带,程序,一些,程序,猫,狗 所以我使用了一个条件,比如 if (!(FindRow.Rows.Contains(val))) { FindRow.Rows.Add(val); } 我希望我的数据表既有Program又有Program,并且不应该有两个cat值,但它只需要一个Program,我可以看到至少两种方法: 准备HashSet并在每次将项添加到DataTable时将相同字符串的小写版

我将一些来自xml的值放在datatable中,我有重复的值,还有一些值区分大小写

例:猫,大象,带,程序,一些,程序,猫,狗

所以我使用了一个条件,比如

if (!(FindRow.Rows.Contains(val)))
{
   FindRow.Rows.Add(val);
}

我希望我的数据表既有
Program
又有
Program
,并且不应该有两个cat值,但它只需要一个
Program

,我可以看到至少两种方法:

  • 准备
    HashSet
    并在每次将项添加到
    DataTable
    时将相同字符串的小写版本添加到集合中。然后,每次要添加新行时,都要检查表的另一侧的集合

    var set = new HashSet<string>();
    
    if (!(set.Contains(val.ToLower())))
    {
       FindRow.Rows.Add(val);
       set.Add(val.ToLower());
    }
    
    var set=newhashset();
    如果(!(set.Contains(val.ToLower()))
    {
    FindRow.Rows.Add(val);
    set.Add(val.ToLower());
    }
    
  • 您可以使用LINQ执行稍微复杂一点的查询:

    if (!(FindRow.Rows.AsEnumerable().Any(r => r.Field<string>("YourKeyColumnName").ToLower() == val.ToLower())))
    {
       FindRow.Rows.Add(val);
    }
    
    if(!(FindRow.Rows.AsEnumerable().Any(r=>r.Field(“YourKeyColumnName”).ToLower()==val.ToLower())
    {
    FindRow.Rows.Add(val);
    }
    
    您需要
    System.Data.DataSetExtensions.dll
    在文件顶部使用System.Data.DataSetExtensions进行引用和
    汇编,以使其正常工作


  • DataTable本身是否规范了大小写?数据库可能取决于(查看
    排序规则
    配置),但DataTable?只需使用FindRow.CaseSensitive=true;