私は観測可能なコレクションを持っています。マルチプル値でObservableCollectionをフィルタリングする方法
このコレクションのクラスには、サーバー値を持つことができるいくつかのフィールドがあります。
多くのフィールドや値を検索できるようにしたいと考えています。
私はICollectionを使用していますが、私が見たすべての例は1つのフィールドの検索に基づいています。
これが私のクラスである:
private bool TaskFilter(
object item)
{
var task = item as KanbanModelExtra;
if (task == null)
{
return false;
}
foreach (var searchItem1 in JobPrioritiesToSearchOn)
{
if (task.JobPriority == searchItem1)
{
foreach (var searchItem2 in JobLabelsToSearchOn)
{
if (task.JobLabel == searchItem2)
{
foreach (var searchItem3 in JobTypesToSearchOn)
{
if (task.JobType == searchItem3)
{
if (SearchByCurrentUser)
{
if (task.UserRef == HeartBeat.CurrentUser.UserRef)
{
return true;
}
}
else
{
return true;
}
}
}
}
}
}
}
return false;
}
が、これは「そうです:
public ObservableCollection<KanbanModelExtra> Tasks
{
get
{
if (_tasks == null)
{
TaskView = CollectionViewSource.GetDefaultView(_tasks);
TaskView.Filter = TaskFilter;
}
return _tasks;
}
set
{
_tasks = value;
}
}
public ICollectionView TaskView { get; private set; }
、そのように私のフィルタを設定:だから
public class Tasks
{
private string JobPriority;
private string JobLabel;
private string JobType;
private string UserRef;
}
JobPriority can be 'High', 'Low'
JobLabel can be 'Apple', 'Android', 'Microsoft'
JobType can be 'Internal', 'Private', 'Public'
、私のような私のコレクションをインスタンス化重く醜い。また、すべての変更によってコレクションが更新されます。すべての基準が選択された後、私はコレクションを新鮮にすることができます。
良い方法がありますか?
ええと、そう簡単!ご回答有難うございます。私はそれを入れて報告します。ありがとうございました –
申し訳ありませんが、間違っていたので、私は答えを編集しました。 – eocron
こんにちは、私は今私のPCから離れる必要があります:(私は両方の答えの間にスピードテストをしたいと思います。私は時間とanswer.repliesをいただきありがとうと私はこれを完了したとすぐに戻ってお約束します:) Thanks again again :) –