0

コードのさまざまな部分に次のものがあります。

質問モデル:

public class QuestionModel {
    public string Question { get; set; }
    public string Answer { get; set; }
}

キーワード:

List<string> SearchKeywords

質問:

List<QuestionModel> Questions

私が達成したいのは、すべての質問のリストから、すべてのキーワードを持つすべての質問を検索して保持することです。

私はこれまで行ってきましたが、障害物にぶつかりました:

var questions = GetAllQuestions(); //returns all questions as a List<QuestionModel>
Questions = questions.All(x => SearchKeywords.All(k => x.Question.Contains(k) || x.Answer.Contains(k)));

ただし、これはブール値を返します。

ヘルプや指示をいただければ幸いです。

4

2 に答える 2

5

間違った LINQ メソッドを使用しています。Where代わりにAll次のものが必要です。

Questions = questions.Where(x => ...);

Allコレクション内のすべてのアイテムが条件を満たしているかどうかを示します (ブール値の結果)。Where条件を満たす要素をフィルタリングします (フィルタリングされたコレクション結果)。

Questions正確には(プロパティのように見えますが、どのタイプですか?)によっては、またはでラップする必要がある場合がありToListますToArray

于 2013-07-17T18:43:51.960 に答える
1

最初Allは間違っています。必要なものWhere:

Questions = questions.Where(x => SearchKeywords.All(k => x.Question.Contains(k) || x.Answer.Contains(k))).ToList();

また、 と同様QuestionsList<QuestionModel>、 が必要ToListです。

于 2013-07-17T18:45:26.703 に答える