1. C# / Говнокод #9571

    +117

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    private             void    _Filter             (ref DataTable Dt)
            {
                if (Dt.Columns.Contains("id_rvobjecttype") && Dt.Columns.Contains("id_rvdevicestatus") && Dt.Columns.Contains("id_storage") && 
                   (RvObjectType > 0 || Status > 0 || Storage > -1))
                {
                    DataRow[]   rows    =   Dt.Select(string.Format(
                        "((id_rvobjecttype = {0} or not {1}) and (id_rvdevicestatus = {2} or not {3}) and (id_storage = {4} or not {5})) or id = {6}", 
                        fRvObjectType, fRvObjectType > 0, (int)Status, Status > 0, Storage, Storage > -1, IgnoreId));
    
                    Dt                  =   rows.Length > 0 ? rows.CopyToDataTable() : Dt.Clone();
                }
            }

    Запостил: gcoder, 29 Февраля 2012

    Комментарии (5) RSS

    • А коли, например, несколько разных Status надо, то вызываем это в цикле и Merge...
      Ответить
    • чудоформатирование тарас 2.0
      Ответить
    • Да, забыл пояснить, Storage - int-идентификатор, валидная айдишка больше 0, если 0 или отрицательное, то фильтровать значит не надо! Status - тип, но там аналогично...
      Т.е. "id_storage = {4} or not {5})" - это либо выбираем нужную строку, либо фильтр отключен... Хорошо с БД у нас другой человек работает...
      Ответить

    Добавить комментарий