に基づいてLINQクエリを構築する(この質問のタイトルはベストではないですが、私はどのように他の単語、それまでわからないんだよ!)私が含まれている検索フォームに取り組んでいますはbools
値のチェックリスト。基本的には、チェック項目は「このタイプを検索に含める」という意味です。このような何か:
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;}
}
私はこのATMをやって考えることができる唯一の方法は、このようなものです::これは感じて
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;
}
Search for item: __________
Search in:
[ ] Fresh Foods
[ ] Frozen Foods
[ ] Beverages
[ ] Deli Counter
私は、この検索を表現するオブジェクトを持っていますコードの臭いのように、それに近づくためのよりよい方法は何でしょうか?
あなたが心に持っているリファクタリングについて詳しく教えてください:) – Kirschstein
あまりよく分かりませんが、少なくともリストに*そのクラスにビルドするコードを書くのは意味があります。 –