0

現在、私は検索機能を使用しています。テキストボックスとボタンがあり、従業員でいっぱいのデータベースを検索しています。別の Web パーツでは、従業員は自分の技術スキルをデータベースに保存し、自分のレベル (初級、中級、上級、または専門家) を保存することもできます。私が管理者として C# などを知っている従業員を探したい場合は、検索するだけで、スキルを持つすべての従業員がグリッドビューに表示されます。

しかし、ここでの私の質問は次のとおりです。

それらの結果をフィルタリングすることは可能ですか? たとえば、検索後にチェックボックス リストを挿入し、C# で「エキスパート」である従業員をフィルター処理したい場合、それらを表示することは可能ですか? 私の英語で申し訳ありませんが、最善を尽くしました。うまくいけば、私は答えを得ます。

ここに画像の説明を入力

検索方法のコード例を次に示します。

    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 などです。

あなたの、クリスチャン

4

1 に答える 1

0

クエリ結果をネイティブ C# オブジェクトのコレクションにシリアル化した直後の時点で Employees をフィルター処理する擬似コードを次に示します。List<Employee>(従業員オブジェクトのリスト) があり、従業員オブジェクトにはレベル フィールドがあると仮定しています。

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

もちろん、ハードコードされた「エキスパート」をListBox.CurrentSelection、ユーザーの入力をレベルで取得するために使用しているものなどに置き換える必要がありますが、それが基本的な考え方です。

于 2013-05-28T21:08:58.623 に答える