0

xxx、yyy、zzz などを含まない結果をフィルター処理したいのですが、Array を使用して不要なものをフィルター処理しようとしましたが、通常どおりフィルター処理して行を返しません。

string[] ExcludeCourses = new string[] {"Functional Skills", "Key Skills"};        
gvProgrammes.DataSource = offerings.Where(o => o.OfferingStatusID == 1
                          && o.OfferingTypeID != 3
                          && !ExcludeCourses.Contains(o.CourseName)); 

最終的に、各エントリについて次のように書きました。それを行うより良い方法はありますか?

offerings.Where(o => o.OfferingStatusID == 1
                 && o.OfferingTypeID != 3
                 && !o.CourseName.Contains("Functional Skills")
                 && !o.CourseName.Contains("Key Skills")
                 && !o.CourseName.Contains("Employer Rights and Responsibilities"));

以下は、除外したい CourseName の例です。

  • 見習い CG Cert Functional Skills Eng L2 (ビジネス管理者)
  • 見習い CG Cert Functional Skills Eng L2 (WBL-Engineering)
  • アプレンティスシップ CG キー スキル AON 2 アプレンティスシップ CG キー スキル AON 1
  • 雇用の権利と責任に関する賞(QCF)
4

1 に答える 1

0

あなたの最初のContainsものはEnumerable.Contains:「この文字列のシーケンスにはこの文字列が含まれています」

2つ目Containsは、String.Contains「この文字列には、この他の文字列がサブ文字列として含まれている」です。

以下は、「この文字列のシーケンスには、この文字列にサブ文字列として含まれる文字列が含まれている」です。

string[] ExcludeCourses = new string[] {
    "Functional Skills",
    "Key Skills",
    "Employer Rights and Responsibilities" };
gvProgrammes.DataSource = offerings.Where(o => o.OfferingStatusID == 1
    && o.OfferingTypeID != 3
    && !ExcludeCourses.Any(ec => o.CourseName.Contains(ec))); 

呼び出しは、基本的に、繰り返し手動で呼び出すのAnyと同じことを行いますString.Contains

于 2012-11-21T11:25:46.320 に答える