Поделиться через


Фильтрация

В примере из этого раздела показано, как отфильтровать поток событий по указанным условиям. Фильтры задаются в предложении where. Это значит, что фильтр передает событие в выходной поток только в случае, если результатом выражения, определенного в предложении where, является значение true. Фильтр обрабатывает событие CepStream<T> и выдает в результате событие CepStream<T>.

Примеры

В следующем примере события в потоке событий someStream ограничиваются событиями, в которых значение поля полезных данных i больше 10. События, не соответствующие этому условию, не передаются в выходной поток.

// Assuming the following input event type:
public class MyPayload
{
    public int i;
}

var queryFilter = from c in someStream
                  where c.i > 10
                  select c;

Предикат фильтра может вызывать любой метод .NET, доступный выполняющемуся процессу. В следующем примере вызывается метод Math.Abs.

var queryFilter = from c in someStream
                  where Math.Abs(c.i) > 10
                  select c;

В качестве параметров могут использоваться атрибуты, зависящие от культуры. В следующем примере указывается атрибут CultureInfo.InvariantCulture.

var queryFilter = from c in someStream
                  where string.Compare(Convert.ToString(c.value),
                                       c.str,
                                       true,
                                       CultureInfo.InvariantCulture) > 0
                  select c;