2

列の1つに文字列値があるデータテーブルがあります。その列に一意性制約を適用したいのですが、最後にスペースだけが異なる2つの値(「test」と「test」など)がある場合、制約は失敗します。これは望ましくありません。最後のスペースだけが異なる場合でも、2つの値が一意であると見なされるようにします。これどうやってするの?

try
            {
                DataTable dt = new DataTable("test");
                dt.Columns.Add("nr");
                dt.Columns.Add("text");
                DataRow dr = dt.NewRow();
                dr.ItemArray = new object[] { 1, "test" };
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr.ItemArray = new object[] { 2, "test " };
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr.ItemArray = new object[] { 3, "alabala" };
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr.ItemArray = new object[] { 4, "bbb" };
                dt.Rows.Add(dr);

                DataSet ds = new DataSet("testds");
                ds.Tables.Add(dt);

                ds.EnforceConstraints = true;
                UniqueConstraint unqUID = new UniqueConstraint(ds.Tables[0].Columns[1], true);
                ds.Tables[0].Constraints.Add(unqUID);

                int count = ds.Tables[0].Rows.Count;
            }
            catch (Exception ex) {
                MessageBox.Show(ex.Message);
            }
4

1 に答える 1

1

私はあなたがこれでできることは何もないと思います。

文字列の最後のスペースを割り引いているようです。このように 2 行目の先頭にスペースを入れると :- "test". スペースが含まれ、2 つの行が一意であると判断されます。

解決策が存在するかどうかを知りたいのですが、見つけることができません。

于 2012-11-21T10:31:11.157 に答える