LINQ Union没有回归想要的结果

时间:2012-08-14 22:10:50

标签: c# asp.net linq union

我有问题我过去几个小时都试图解决这个问题,但根本没有任何运气。

首先,让我向您展示我的数据库的外观(只是其中的一个重要部分): enter image description here

[radno_mjesto] =工作 [grupa_radnih_mjesta] =工作组(属于特定群体的工作;例如,如果群组名称评判将属于该群体的工作将是:最高法院法官行政法法官高级法官等) [osoba] = PERSON

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

        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);
        }

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分: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();
}

我猜这里的名字!!!