The C# program below illustrates the error described in this article.

// C# program to illustrate unexpected behavior in DataView.RowFilter
using System;
using System.Data;
namespace dvTest
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            DataSet myds = new DataSet();
            // Create the tables
            DataTable tblLegislators = new DataTable("Legislators");
            tblLegislators.Columns.Add("LegislatorCode");
            tblLegislators.Columns.Add("DisplayName");
            DataTable tblAuthors = new DataTable("Authors");
            tblAuthors.Columns.Add("BillNumber");
            tblAuthors.Columns.Add("LegislatorCode");
            // AuthorType:  P = Primary author, C = Coauthor
            tblAuthors.Columns.Add("AuthorType");
            // Add tables to dataset
            myds.Tables.Add(tblLegislators);
            myds.Tables.Add(tblAuthors);
            // Add a relationship.
            myds.Relations.Add(tblLegislators.Columns["LegislatorCode"],
                tblAuthors.Columns["LegislatorCode"]);
            // populate the legislators table
            tblLegislators.Rows.Add(new object[] {"A0123", "Smith (A0123)"});
            tblLegislators.Rows.Add(new object[] {"A1234", "Jones (A1234)"});
            tblLegislators.Rows.Add(new object[] {"A5038", "Jackson (A5038)"});
            tblLegislators.Rows.Add(new object[] {"A0191", "Morton (A0191)"});
            // Populate the Authors table.
            // LegislatorCode must be present in Legislators table
            tblAuthors.Rows.Add(new object[] {"001", "A0123", "P"});
            tblAuthors.Rows.Add(new object[] {"001", "A5038", "C"});
            // Accept changes on the dataset.
            myds.AcceptChanges();
            // dvLegislators is a dataview that contains legislators
            // that do not have a record in tblAuthors.
            DataView dvLegislators = new DataView(
                tblLegislators,
                "Count(Child.LegislatorCode)=0",
                "DisplayName",
                DataViewRowState.CurrentRows);
            // Show contents
            ShowLegislators(dvLegislators);
            // Add another coauthor
            Console.WriteLine("Add Legislator 0191 as a coauthor");
            tblAuthors.Rows.Add(new object[] {"001", "A0191", "C"});
            // Show contents -- why is 0191 still in this DataView?
            ShowLegislators(dvLegislators);
            // Re-filter the DataView
            dvLegislators.RowFilter = "";
            try
            {
                // Why does this throw an exception?
                dvLegislators.RowFilter = "Count(Child.LegislatorCode)=0";
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            Console.WriteLine("Press Enter");
            Console.ReadLine();
        }

        static void ShowLegislators(DataView dvLegislators)
        {
            // Display contents of dvLegislators
            Console.WriteLine("dvLegislators contains:");
            foreach (DataRowView drv in dvLegislators)
            {
                Console.WriteLine(drv["DisplayName"].ToString());
            }
            Console.WriteLine();
        }
    }
}