У меня есть datagridview, где я хочу получить список лиц, построенных на значениях флажков (идентификаторы сохранены в теге флажка). Эти флажки строят кодом и добавляют в 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();
Что я могу изменить, чтобы получить правильный выход?