辞書を使用する私はIEnumerableをループし、そのたびにフィルター辞書に従ってフィルターを適用します。 FilterType enumは、フィルタを適用するフィールドを決定し、文字列はフリーテキストフィルタそのものです。同じIEnumerableでループするLINQクエリ - 何が欠けていますか?
問題は、複数のフィルタを辞書に追加すると(つまり、FilterType.CustomerとFilterType.Nameフィルタの両方)、フィルタはCustomerフィールドとNameフィールドの両方に適用されますが、フリーテキストフィルタ追加された最初のフィルタから取得されます。私。次のコードでは、nameFilterBox.TextはLINQクエリのNameフィールドとCustomerフィールドの両方に適用されますが、customerFilterBox.Textはまったく適用されません。したがって、辞書のFilterType部分は2回読み込まれますが、文字列フィルタは最初のものからのみ読み込まれます。
なぜこれが起こっているのか分かりません。
static IEnumerable<Jobb> jobQuery = GetInitialJobQuery();
Dictionary<FilterType, string> filters = new Dictionary<FilterType, string>();
filters.Add(FilterType.Name, nameFilterBox.Text);
filters.Add(FilterType.Customer, customerFilterBox.Text);
foreach (var filter in filters)
{
switch (filter.Key)
{
case FilterType.Customer:
jobQuery = jobQuery.Where(x => x.KUNDREF != null &&
x.KUNDREF.ToLower().Contains(filter.Value.ToLower()));
break;
case FilterType.Name:
jobQuery = jobQuery.Where(x => x.JOBBESKR != null &&
x.JOBBESKR.ToLower().Contains(filter.Value.ToLower()));
break;
}
}
、「社内の誰もがより読みやすい/説明的な名前を使用する可能性を検討していますKUNDREF "と" JOBBESKR "? – Timwi
スウェーデン語を知っていれば記述的です;) – jgauffin