Перечисление DbSeekOptions

Параметры, определяющие метод поиска в индексе методом Seek.

Это перечисление имеет атрибут FlagsAttribute, допускающий побитовое сочетание значений его элементов.

Пространство имен:  System.Data.SqlServerCe
Сборка:  System.Data.SqlServerCe (в System.Data.SqlServerCe.dll)

[FlagsAttribute]
public enum DbSeekOptions

Имя элементаОписание
FirstEqualПереходит к первой совпадающей строке индекса (в порядке, определяемом индексом).
LastEqualПереходит к последней совпадающей строке индекса (в порядке, определяемом индексом).
AfterEqualПереходит к последней совпадающей строке в индексе. Если совпадающие строки отсутствуют, осуществляет переход к первой строке со значениями после искомого значения в порядке, определяемом индексом.
AfterПереходит к первой строке со значениями (в порядке, определяемом индексом), следующей после искомого значения.
BeforeEqualПереходит к первой совпадающей строке в индексе. Если совпадающие строки отсутствуют, производится переход к последней строке со значениями, предшествующей искомому значению в порядке, определяемом индексом.
BeforeПереходит к последней строке со значениями (в порядке, определяемом индексом), предшествующей искомому значению.

В следующем примере методу Seek при выполнении операции с индексом передается параметр FirstEqual.

        try
        {
            SqlCeConnection conn = new SqlCeConnection("Data Source = MyDatabase.sdf");
            conn.Open();

            SqlCeCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.TableDirect;
            cmd.IndexName = "Orders_PK";
            cmd.CommandText = "Orders";

            // We are interested in orders that match Order ID = 10020
            //
            cmd.SetRange(DbRangeOptions.Match, new object[] { 10020 }, null);

            SqlCeDataReader reader = cmd.ExecuteReader(CommandBehavior.Default);

            for (int i = 1; reader.Read(); i++)
            {
                MessageBox.Show(String.Format("{0} ; {1}", reader["Order ID"], reader["Order Date"]));
            }

            // Now we are interested in orders with Order ID between (10020, 10050)
            //
            cmd.SetRange(DbRangeOptions.InclusiveStart | DbRangeOptions.InclusiveEnd,
                new object[] { 10020 }, new object[] { 10050 });

            reader = cmd.ExecuteReader(CommandBehavior.Default);

            // Now seek to Order ID = 10045
            //
            bool onRow = reader.Seek(DbSeekOptions.FirstEqual, new object[] { 10045 });

            // Now ,the reader will return rows with Order ID >= 10045 <= 10050
            // because the range was set to (10020, 10050)
            //
            if (onRow)
            {
				for (int i = 1; reader.Read(); i++)
				{
					MessageBox.Show(String.Format("{0} ; {1}", reader["Order ID"], reader["Order Date"]));
				}
            }
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }


Показ: