Я ищу несколько советов о хорошем способе достижения своей цели. Я чувствую, что мой псевдо-код ниже избыточен и что должен быть более эффективный способ сделать это. Мой вопрос заключается в том, чтобы улучшить этот или более эффективный способ? Так вот установка ...Фильтрация списка объектов на основе строки и bool в C#
У меня есть класс с именем узла, который имеет два свойства
class Node
{
bool favorite
string name
}
У меня есть список, который содержит около тысячи этих узлов. Я хочу, чтобы дать пользователям три функции ..
Способ фильтрации списка, чтобы просто показать избранные в противном случае, если избранные ложна отображает первоначальный список
Возможность поиска по строке/сравнение имя
способность как поиск и любимой работы в сочетании
ниже - мой псевдокод - описывает подход, но не идеальный. Вы можете прочитать комментарии в коде, чтобы получить главный смысл.
// initial collection of nodes
list<Nodes> initialnodesList = [];
// list of nodes which are displayed in UI
list<Nodes> displayNodes = [];
public void FilterNodes()
{
list<Nodes> tempNodesList = [];
if (favoritesEnabled)
{
// collect favorites
foreach (n in initialnodesList)
if (n.favorite)
tempNodesList.add(n);
// search within favorites if needed and create new list
list<Nodes> searchedNodesList = [];
if (!isStringNullWhiteSpace(searchString))
{
foreach (n in tempNodesList)
if (n.name == searchString)
searchedNodesList.add(n);
displayNodes = searchedNodesList;
return;
}else{
return;
}
}
else
{
// search within initial node collection if needed and create new list
list<Nodes> searchedNodesList = [];
if (!isStringNullWhiteSpace(searchString))
{
foreach (n in initialnodesList)
if (n.name == searchString)
searchedNodesList.add(n);
displayNodes = searchedNodesList;
return;
}
// if search is not needed and favorites were not enabled then just return the original node collection
displayNodes = initialnodesList;
return;
}
}
Что именно эта цель? Вы хотите закодировать его на C# и сделать код более чистым? Если это так, вы должны взглянуть на 'Linq', особенно' IEnumerable.Where' – Domysee