1

私はここ数時間解決しようとしていた問題を抱えていますが、まったく運がありません。

まず、私のデータベースがどのように見えるかをお見せしましょう(データベースの重要な部分です)。 ここに画像の説明を入力してください

[radno_mjesto] = JOB [grupa_radnih_mjesta] = JOB GROUPS(特定のグループに分類されるジョブ。たとえば、グループ名が裁判官である場合、このグループに分類されるジョブは、最高裁判所の裁判官行政法判事上級裁判官などになります。 )[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);
        }

どんな助けでもいただければ幸いです。

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 に答える