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 证书功能技能 Eng L2(业务管理)
  • 学徒 CG 证书功能技能 Eng L2(WBL-工程)
  • 学徒 CG 关键技能 AON 2 学徒 CG 关键技能 AON 1
  • 就业权利和责任奖 (QCF)
4

1 回答 1

0

你的第一个ContainsEnumerable.Contains:“这个字符串序列包含这个字符串”

你的第二个ContainsString.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 回答