0

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

标签 = ID 文本 = 描述

现在我想用这些作为过滤器来找出哪些人提供了选定的活动和选定的语言(例如,Mountainbike 和法语和英语导游)。所以我想要一个 AND AND AND AND AND 选择。

表:tblGuides / tblLanguages / tblActivities / tblGuideLanguages / tblGuideActivities

tblGuides:ID/姓名/名字/地址/... tblLanguages:ID/描述 tblActivities:ID/名称/持续时间/免费 tblGuidelanguages:GuideID/LanguageID tblGuideActivities:GuideID/ActivityID

第一步:我列出 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 选择。有人可以让我走上正确的轨道吗?谢谢

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 回答