1

在过去的几个小时里,我一直在尝试解决问题,但一点运气都没有。

首先,让我向您展示我的数据库的外观(只是其中的一个重要部分): 在此处输入图像描述

[radno_mjesto] = JOB [grupa_radnih_mjesta] = JOB GROUPS(属于特定组的工作;例如,如果组名称是法官,则属于该组的工作将是:最高法院法官行政法法官高级法官等。 ) [osoba] = 人

我想要实现的是查询所有属于特定工作组的人,但几个小时后我无法成功。我正在尝试以下代码的各种组合,但我只得到了两个结果:所有人(无论他们的工作是什么)或只有特定工作的人(本例中工作组的最后一份工作) .

        var sveOsobe = from p in db.osobas
                       select p;


        if (chkGrupaRadnihMjesta.Checked)
        {
            int id = Convert.ToInt32(GrupaRadnihMjesta.SelectedValue);

            var radnaMjesta = from rm in db.grupe_radnih_mjesta_radna_mjesta
                              where rm.grm_id == id
                              select rm;

            var praznoOsobe = sveOsobe.Where(o => o.osoba_id == -1);

            foreach (var radnoMjesto in radnaMjesta)
            {
                var sveOsobeRadnaMjesta = from p in db.osobas
                                          where p.osoba_id == -1
                                          select p;

                sveOsobeRadnaMjesta = sveOsobe.Where(o => o.rm_id == radnoMjesto.rm_id).Union(sveOsobeRadnaMjesta);
                praznoOsobe = praznoOsobe.Union(sveOsobeRadnaMjesta);
            }
            sveOsobe = sveOsobe.Intersect(praznoOsobe);
        }

任何帮助,将不胜感激。

4

1 回答 1

1

这应该工作....

if (chkGrupaRadnihMjesta.Checked) { 
  int id = Convert.ToInt32(GrupaRadnihMjesta.SelectedValue); 
  var sveOsobe = (
    from p in db.osobas 
    join l in db.grupe_radnih_mjesta_radna_mjesta on l.rm_id equals p.rm_id
    where l.grm_id == id
    select p
  ).Distinct();
}

我在这里猜名字!!!

于 2012-08-14T22:57:02.170 回答