結合を使用して複数のテーブルからデータをフェッチしていますが、問題の原因となっているテーブル イメージが下に添付されています。このテーブルはテストのステータスを追跡します。プロセス ID が 11 のテストが必要ですが、追跡テーブルとして複数の行が返されるため、ビューで 1 つのレコードが 3 回繰り返され、bookingdid に groupby を適用して最大 trackid を取得しようとしています。これはテーブルの一意のIDですが、私のlinqクエリも以下にあることはできません。どんな助けでも。
ここに私のlinqクエリがあります:
using (var db = new bc_limsEntities())
{
var result = (from d in db.dc_tpatient_bookingd
join m in db.dc_tpatient_bookingm on d.bookingid equals m.bookingid into a
from m in a.DefaultIfEmpty()
join p in db.dc_tpatient on m.prid equals p.prid into b
from p in b.DefaultIfEmpty()
join t in db.dc_tp_test on d.testid equals t.TestId into c
from t in c.DefaultIfEmpty()
//join mt in db.dc_tp_tmethod on t.TestId equals mt.testid into j
//from mt in j.DefaultIfEmpty()
// join gm in db.dc_tp_groupm on t.GroupId equals gm.GroupId into e
//from gm in e.DefaultIfEmpty()
join pn in db.dc_tpanel on m.panelid equals pn.panelid into f
from pn in f.DefaultIfEmpty()
join og in db.dc_tp_organization on m.clientid equals og.OrgId into g
from og in g.DefaultIfEmpty()
join w in db.dc_tp_ward on m.wardid equals w.wardid into h
from w in h.DefaultIfEmpty()
join tb in db.dc_tp_branch on m.BranchID equals tb.BranchID into i
from tb in i.DefaultIfEmpty()
join bd in db.dc_tp_refdoctors on m.doctorid equals bd.doctorid into k
from bd in k.DefaultIfEmpty()
join dt in db.dc_tstatustrack on d.bookingdid equals dt.bookingdid into l
from dt in l.DefaultIfEmpty()
where d.ProcessID == 5
&& t.SubdepartmentId == subDepartmentID
&& fromDate <= m.enteredon && m.enteredon <= DateTime.Now
&& d.status != "H"
&& DateTime.Now > d.deliverytime
&& dt.processid == 11
select new { d, p, m, t, bd, pn, dt }).Distinct().ToList();
私はこのようなことをしましたが、うまくいきませんでした:
group new { d, p, m, t, bd, pn, dt } by new { dt.bookingdid } into mno
どんな助けでも大歓迎です