私が直面しているエラーは
デリゲート 'System.Func< MyWebSiteApp.Models.FontCategory,int,bool >' は引数を 1 つ取りません
var s = db.FontCategories.Include("Fonts").
Where(s=>s.Fonts.Where(s=>s.Inactive == false).ToList();
それを修正する方法はありますか?
あなたは Linq Anyを求めていると思います。これにより、少なくとも 1 つのアクティブなフォントを含むフォント カテゴリが返されます。
var s = db.FontCategories.Include("Fonts").
.Where(s => s.Fonts.Any(s => s.Inactive == false)).ToList();
既存のコードの問題は、WherePredicate<FontCategory>
が型 (つまり、true/false を返すラムダ) を期待しているのに、ラムダがIEnumerable<Font>
代わりに返すことです。したがって、エラー。
Anyのドキュメントから:
シーケンスの要素が存在するかどうか、または条件を満たすかどうかを判断します。
かっこを見逃すと、where句はTを取り、ブール値を返す関数を取ります。式はs=>s.somethingBoolである必要があります
var fontCandidates = db.FontCategories.Include("Fonts").SelectMany(s => s.Fonts);
var activeFonts = fontCandidates.Where(f => !f.Inactive).ToList();