У меня есть сетевое представление, в котором я хочу получить список людей, основанных на значениях флажков (идентификаторы сохраняются в теге флажка). Эти флажки создаются по коду и добавляются в 2 разных групповых блока (sgbExcursion и sgbLanguage)
Фильтр отлично работает, если вы выберете только одну экскурсию (верхние флажки) и только один язык.
Если я выберу 2 языка (нижние флажки), он будет рассматриваться как "или". Показаны все лица, говорящие на одном из выбранных языков, а не только лица, говорящие на обоих выбранных языках. Та же проблема с экскурсиями.
Здесь я строю список выбранных экскурсий и языков:
List<int> oExcursionID = new List<int>();
foreach (Control oControl in sgbExcursion.Controls)
{
if (oControl.GetType() == typeof(CheckBox))
{
CheckBox oCheckBox = (CheckBox)oControl;
if (oCheckBox.Checked)
{
oExcursionID.Add(int.Parse(oCheckBox.Tag.ToString()));
}
}
}
List<int> oLanguageID = new List<int>();
foreach (Control oControl in sgbLanguage.Controls)
{
if (oControl.GetType() == typeof(CheckBox))
{
CheckBox oCheckBox = (CheckBox)oControl;
if (oCheckBox.Checked)
{
oLanguageID.Add(int.Parse(oCheckBox.Tag.ToString()));
}
}
}
Здесь я пытаюсь получить правильные значения из базы данных. И языки, и экскурсии сохраняются в реляционной таблице (Person_ID, Exursion_ID) или (Person_ID, Language_ID).
var vGuides = (from oGuideToAdd in clsApplication._oDBConnection.tblGuides
where ((from oGuideExcursion in clsApplication._oDBConnection.tblGuideExcursions
where oExcursionID.Contains(oGuideExcursion.ExcursionID)
select oGuideExcursion.GuideID).Contains(oGuideToAdd.ID)
&& (from oGuideLanguage in clsApplication._oDBConnection.tblGuideLanguages
where oLanguageID.Contains(oGuideLanguage.LanguageID)
select oGuideLanguage.GuideID).Contains(oGuideToAdd.ID))
select oGuideToAdd).ToList();
Что я могу изменить, чтобы получить правильный вывод?