1

私が直面しているエラーは

デリゲート 'System.Func< MyWebSiteApp.Models.FontCategory,int,bool >' は引数を 1 つ取りません

var s = db.FontCategories.Include("Fonts").
                Where(s=>s.Fonts.Where(s=>s.Inactive == false).ToList();

それを修正する方法はありますか?

4

2 に答える 2

4

あなたは 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のドキュメントから:

シーケンスの要素が存在するかどうか、または条件を満たすかどうかを判断します。

于 2012-08-31T03:43:17.550 に答える
0

かっこを見逃すと、where句はTを取り、ブール値を返す関数を取ります。式はs=>s.somethingBoolである必要があります

var fontCandidates = db.FontCategories.Include("Fonts").SelectMany(s => s.Fonts);
var activeFonts = fontCandidates.Where(f => !f.Inactive).ToList();

           

于 2012-08-31T03:47:17.910 に答える