我有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
答案 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
您可以为每个活动/语言对执行此类查询,这将为您提供指南列表 - 然后您可以从列表中选择不同的条目。
它可能需要重构,因为没有所有数据很难测试它 - 希望这有点帮助。