2013-05-28 5 views
0

Сейчас я работаю с функцией поиска. У меня есть текстовое поле и кнопка и поиск в базе данных, полной сотрудников. В другой веб-части сотрудники имеют возможность сохранить свои технические навыки в базе данных, а также на каком уровне они находятся (Beginner, Intermediate, Advanced или Expert). Когда я как администратор хочу найти сотрудника, который знает, например, C#, то я просто его ищу, и все сотрудники с навыком появляются в gridview.Фильтровать результаты поиска по базе данных

Но мой вопрос здесь:

Можно ли отфильтровать эти результаты? Например, если я поместил в checkboxlist после поиска, и я хочу фильтровать на сотрудников, которые являются «Экспертами» на C#, можно ли просто их отображать? Извините за мой английский, но я сделал все возможное. Надеюсь, я получу ответ.

enter image description here

Вот пример кода, как я ищу:

private void SearchEmployeeSkillEng() 
    { 
     using (var db = new KnowItCvdbEntities()) 
     { 
      var searchTechSkill = (from p in db.EMPLOYEES 
            join ets in db.EMPLOYEES_TECHNICAL_SKILLS on p.employee_id equals 
             ets.employee_id 
            join ts in db.TECHNICAL_SKILLS_VALUES on ets.technical_skill_value_id 
             equals 
             ts.technical_skill_value_id 
            join tsl in db.TECHNICAL_SKILL_LEVEL on ets.technical_skill_level_id 
             equals 
             tsl.technical_skill_level_id 
            where 
             ts.skill_name.Contains(TextBoxSearchCvEng.Text) || 
             ets.skill_name_other.Contains(TextBoxSearchCvEng.Text) 
            select new TechnicalSkillsSearch() 
            { 
             EmployeeId = p.employee_id, 
             FirstName = p.firstname, 
             LastName = p.lastname, 

             TechnicalSkillValueId = ts.technical_skill_value_id, 
             SkillName = ts.skill_name, 
             SkillNameOther = ets.skill_name_other, 
             SkillType = ts.skill_type, 
             TechnicalSkillLevelId = tsl.technical_skill_level_id, 
             SkillLevel = tsl.skill_level 
            }).ToList(); 

      if(searchTechSkill.Count > 0) 
      { 
       LabelException.Visible = false; 
       foreach (var vTechSkill in searchTechSkill) 
       { 
        if (vTechSkill != null) 
        { 
         if (vTechSkill.SkillNameOther != null) 
         { 
          if (!_searchEmpListEng.Contains(vTechSkill.FirstName + " " + vTechSkill.LastName + "," + 
                 vTechSkill.EmployeeId)) 
          { 
           _searchEmpListEng.Add(vTechSkill.FirstName + " " + vTechSkill.LastName + "," + 
                vTechSkill.EmployeeId.ToString()); 
          } 
         } 
         else 
         { 
          if (!_searchEmpListEng.Contains(vTechSkill.FirstName + " " + vTechSkill.LastName + "," + 
                 vTechSkill.EmployeeId)) 
          { 
           _searchEmpListEng.Add(vTechSkill.FirstName + " " + vTechSkill.LastName + "," + 
                vTechSkill.EmployeeId.ToString()); 
          } 
         } 
        } 
       } 
      } 
      else 
      { 
       LabelException.Visible = true; 
       LabelException.Text = "Nothing found"; 
      } 
      _dtEng.Clear(); 

     } 
    } 

TECHNICAL_SKILLS_VALUES является, например, C#, MS Access и т.д. и TECHNICAL_SKILL_LEVEL является, например, Expert, Beginner и т.д.

Ваш, Kristian

+0

Да, это возможно. Вы изменяете свой запрос, чтобы включить новый фильтр или фильтровать клиентскую часть GridView. Поместите некоторый код. Извините, не уверен в SharePoint. –

+0

@SamLeach, просто укажите пример изображения и кода. – Kriistiian

ответ

0

Вот несколько псевдокодов для фильтрации сотрудников в точке сразу после того, как вы сериализовали результаты запросов в коллекцию собственных объектов C#. Я предполагаю, что у вас есть List<Employee> (список объектов сотрудника), а объект Employee имеет поле уровня.

List<Employee> experts = oldList.Select(x => x).Where(y => y.level == "Expert").ToList(); 

Конечно, вы должны заменить мой жесткий кодированный «Эксперт» с чем-то вроде ListBox.CurrentSelection или все, что вы используете, чтобы получить вход пользователей на уровне, но это основная идея.

+0

Спасибо, например, я приведу образ того, как это выглядит, возможно, вы можете помочь мне дальше – Kriistiian

+0

Просто предоставил образ и пример кода – Kriistiian

Смежные вопросы