Как отфильтровать список по нескольким условиям? - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь отфильтровать List с несколькими условиями. Главное, я должен использовать условие, если оно true, а не если оно false. Если условие false, я не должен использовать это для фильтрации. Ниже мой код

void performFiltering(bool homeVisits, bool onTheSpotServices)
  {
    //Check for home and on the spot filtering
    if(homeVisits==true)
    {
      filteredOrganizationList = orgList.where((org) => org.homeVisits==true);
    }
    else if(onTheSpotServices==true)
    {
      filteredOrganizationList = orgList.where((org) => org.onTheSpotService==true);
    }
    else if(homeVisits==true && onTheSpotServices==true)
    {
      filteredOrganizationList = orgList.where((org) => (org.onTheSpotService==true) ||(org.homeVisits==true) );

    }

  }

здесь я сделал простые if-else заявления. Ничего серьезного. Но я не могу сделать это, когда есть больше условий. К счастью, это всего лишь 2 условия, но у меня впереди гораздо больше.

Также обратите внимание, что я использовал команду OR в последнем утверждении. Это означает получение результатов, когда homeVisits=true или onTheSpotServices=true

Какой самый эффективный способ передать это?

1 Ответ

1 голос
/ 02 мая 2020

нет необходимости в каскаде из нескольких if-else s

, вместо этого используйте один where с пользовательской функцией test:

filteredOrganizationList = orgList.where((org) =>
  homeVisits && org.homeVisits ||
  onTheSpotServices && org.onTheSpotService ||
  ... // rest of your filter tests      
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...