Группировка IObservable по свойству и времени ожидания

Не используйте инициализацию конструктора для этого.

DataTable dt = new DataTable();
using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
using (var cmd = new SqlCommand(" SELECT FName" +
                                        " FROM EmployeeTable " +
                                        " WHERE EmployeeId = @empId",
                                        con))
{
    cmd.Parameters.Add(new SqlParameter("@empId",empId));
    try
    {
           con.open();
           dt.Load(cmd.ExecuteReader());
    }
    catch(Exception) //BAD BAD BAD!!! Why are you doing this!
    {
    }
}
return dt;

Также почему вы ловите все исключения и отбрасываете их, это ужасно. Если у вас есть исключение, которое, по вашему мнению, будет распространено, сначала посмотрите, можете ли вы реорганизовать свой код, чтобы проверить его на входные значения, которые могли бы вызвать его, а не набросать вообще (возможно, даже выбросить ArgumentException самостоятельно) , и если вы не можете этого сделать, проверьте это конкретное исключение, а не все возможные.

0
задан Impworks 22 February 2019 в 18:20
поделиться

1 ответ

Хитрость заключалась в том, чтобы использовать GroupByUntil с Throttle на себе:

IObservable<List<Record>> Process(IObservable<Record> source, TimeSpan timeout)
{
    return source.GroupByUntil(x => x.Group, g => g.Throttle(timeout))
                 .SelectMany(x => x.ToList());
}
0
ответ дан Impworks 22 February 2019 в 18:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: