(Der Titel für diese Frage ist nicht die beste, aber ich bin nicht sicher, wie sonst zu Wort, um es!)eine LINQ-Abfrage auf bools basierend Aufbau
ich auf einem Suchformular gerade arbeite, die eine enthält Checkliste der Werte. Grundsätzlich bedeutet ein überprüfter Artikel "Diesen Typ in die Suche einbeziehen". Etwas wie folgt aus:
Search for item: __________
Search in:
[ ] Fresh Foods
[ ] Frozen Foods
[ ] Beverages
[ ] Deli Counter
Ich habe ein Objekt diese Suche darzustellen:
class FoodSearchCriteria{
public string SearchString {get;set;}
public bool SearchFreshFoods {get;set;}
public bool SearchFrozenFoods {get;set;}
public bool SearchBeverages {get;set;}
public bool SearchDeliCounter {get;set;}
}
Der einzige Weg, ich, dies zu tun atm denken kann, ist wie folgt:
public IList<FoodItem> FindFoodItems(FoodSearchCriteria criteria)
// in reality, this is a fuzzy search not an exact match
var matches = _DB.FoodItems.Where(x => x.FoodTitle == SearchString);
var inCategories = new List<FoodItem>();
if (criteria.SearchFreshFoods)
inCategories.Add(matches.Where(x => x.Type == 'Fresh Foods'));
if (criteria.SearchFrozenFoods)
inCategories.Add(matches.Where(x => x.Type == 'Frozen Foods'));
//etc etc
return inCategories;
}
Das fühlt sich Wie ein Code-Geruch für mich, was wäre ein besserer Weg, um es zu nähern?
Fühlen Sie sich frei, was Refactoring Sie im Hinterkopf haben :) – Kirschstein
Nicht sicher, off-hand ... aber zumindest wäre es sinnvoll, den Code zu setzen, um die Liste * in * dieser Klasse zu bauen. –