0

私は 2 つのグループボックスを持っています。1 つはすべての種類のアクティビティ用で、もう 1 つは言語用です。各グループボックスには、ループを使用してデータベースから作成された多数のチェックボックスが含まれています。

タグ = ID テキスト = 説明

ここで、これらをフィルターとして使用して、選択したアクティビティを選択した言語 (フランス語と英語でのマウンテンバイクとガイド付き旅行など) で提供する人を見つけたいと考えています。したがって、AND AND AND AND AND 選択が必要です。

テーブル: tblGuides / tblLanguages / tblActivities / tblGuideLanguages / tblGuideActivities

tblGuides : ID / Name / FirstName / Address / ... tblLanguages : ID / Description tblActivities : ID / Name / Duration / Free tblGuidelanguages : GuideID / LanguageID tblGuideActivities : GuideID / ActivityID

1st STEP : 選択した言語と選択したアクティビティの 2 つのリストを作成します

List<int> lstExcursionID = new List<int>();

foreach (Control oControl in sgbExcursion.Controls)
{
    if (oControl.GetType() == typeof(CheckBox))
    {
        CheckBox oCheckBox = (CheckBox)oControl;
        if (oCheckBox.Checked)
        {
            lstExcursionID.Add(int.Parse(oCheckBox.Tag.ToString()));
        }
    }
}

現在、lstExcursionID と lstLanguagesID の 2 つのリストがあります。

しかし、データベースから適切なデータを取得するにはどうすればよいでしょうか? さまざまな LINQ クエリを試しましたが、常に OR 選択です。誰かが私を正しい軌道に乗せることができますか? どうも

4

1 に答える 1

0

リストに参加したいようですが、あなたの説明に基づいて、参加できるものがあるかどうかわかりません。

入力データの例を示していただけると助かります。

アップデート:

これは、私がアプローチする方法のドラフトです。これにより、選択した言語で選択したアクティビティのガイド名/ID が見つかるはずです。

var guide = from g in tblGuides
            join ga in tblGuideActivities on g.Id equals ga.GuideID
            join gl in tblGuideLanguages on g.ID equals gl.GuideID
            where ga.ActivityID == [selectedActivity]
            and gl.LanguageID == [selectedLanguage]
            select g.Name

アクティビティと言語のペアごとにこのようなクエリを実行すると、ガイドのリストが得られます。その後、リストから個別のエントリだけを選択できます。

すべてのデータなしでテストするのは難しいため、リファクタリングが必要になる場合があります。これが少し役立つことを願っています。

于 2012-04-30T12:26:14.337 に答える