多个选择查询来自2个不同组框中的多个复选框

时间:2012-04-30 09:59:47

标签: linq select checkbox

我有2个分组,一个用于所有类型的活动,一个用于语言。 每个组框都包含一些带有循环的数据库创建的复选框。

标签= ID 文字=说明

现在我想用这些作为过滤器,找出哪些人提供所选择的活动和选定的语言(例如山地自行车和法语和英语的导游)。 所以我想要一个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

第1步:我制作了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()));
        }
    }
}

我现在有2个列表:lstExcursionID和lstLanguagesID

但是如何从数据库中获取正确的数据呢?我尝试了不同的LINQ查询,但它是一个OR选择。 有人能让我走上正轨吗? THX

1 个答案:

答案 0 :(得分: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

您可以为每个活动/语言对执行此类查询,这将为您提供指南列表 - 然后您可以从列表中选择不同的条目。

它可能需要重构,因为没有所有数据很难测试它 - 希望这有点帮助。