Share via

DataTable.CaseSensitive Property


Indicates whether string comparisons within the table are case-sensitive.

 property bool CaseSensitive { bool get(); void set(bool value); };
public bool CaseSensitive { get; set; }
public bool CaseSensitive { get; set; }
member this.CaseSensitive : bool with get, set
member this.CaseSensitive : bool with get, set
Public Property CaseSensitive As Boolean

Property Value

true if the comparison is case-sensitive; otherwise false. The default is set to the parent DataSet object's CaseSensitive property, or false if the DataTable was created independently of a DataSet.



The following example calls the Select method twice on a DataTable. The first time, the CaseSensitive property is set to false, the second, to true.

private static void ToggleCaseSensitive()
    DataTable t;
    DataRow[] foundRows;

    t = CreateDataSet().Tables[0];

    t.CaseSensitive = false;
    foundRows = t.Select("item = 'abc'");

    // Print out DataRow values.
    PrintRowValues(foundRows, "CaseSensitive = False");

    t.CaseSensitive = true;
    foundRows = t.Select("item = 'abc'");

    PrintRowValues(foundRows, "CaseSensitive = True");

public static DataSet CreateDataSet()
    // Create a DataSet with one table, two columns
    DataSet ds = new DataSet();
    DataTable t = new DataTable("Items");

    // Add table to dataset

    // Add two columns
    DataColumn c;

    // First column
    c = t.Columns.Add("id", typeof(int));
    c.AutoIncrement = true;

    // Second column
    t.Columns.Add("item", typeof(string));

    // Set primary key
    t.PrimaryKey = new DataColumn[] { t.Columns["id"] };

    // Add twelve rows
    for (int i = 0; i < 10; i++)
        t.Rows.Add(new object[] { i, i.ToString() });
    t.Rows.Add(new object[] { 11, "abc" });
    t.Rows.Add(new object[] { 15, "ABC" });

    return ds;

private static void PrintRowValues(DataRow[] rows, string label)
    if (rows.Length <= 0)
        Console.WriteLine("no rows found");
    foreach (DataRow r in rows)
        foreach (DataColumn c in r.Table.Columns)
            Console.Write("\t {0}", r[c]);

Private Sub ToggleCaseSensitive()
    Dim t As DataTable
    Dim foundRows() As DataRow

    t = CreateDataSet().Tables(0)

    t.CaseSensitive = False
    foundRows = t.Select("item = 'abc'")

    ' Print out DataRow values. Row 0 contains the value we're looking for.
    PrintRowValues(foundRows, "CaseSensitive = False")

    t.CaseSensitive = True
    foundRows = t.Select("item = 'abc'")

    PrintRowValues(foundRows, "CaseSensitive = True")
End Sub

Public Function CreateDataSet() As DataSet
    ' Create a DataSet with one table, two columns
    Dim ds As New DataSet
    Dim t As New DataTable("Items")

    ' Add table to DataSet

    ' Add two columns
    Dim c As DataColumn

    ' First column
    c = t.Columns.Add("id", Type.GetType("System.Int32"))
    c.AutoIncrement = True

    ' Second column
    t.Columns.Add("item", Type.GetType("System.String"))

    ' Set primary key
    t.PrimaryKey = New DataColumn() {t.Columns("id")}

    For i As Integer = 0 To 9
        t.Rows.Add(New Object() {i, i.ToString()})
    t.Rows.Add(New Object() {11, "abc"})
    t.Rows.Add(New Object() {15, "ABC"})

    CreateDataSet = ds
End Function

Private Sub PrintRowValues(ByRef rows As DataRow(), ByVal label As String)
    If rows.Length <= 0 Then
        Console.WriteLine("no rows found")
    End If

    For Each r As DataRow In rows
        For Each c As DataColumn In r.Table.Columns
            Console.Write(vbTab & " {0}", r(c))
End Sub


The CaseSensitive property affects string comparisons in sorting, searching, and filtering.

Applies to

See also