2017-07-13 13 views
0

従業員LINQを使用してテーブルから最後に挿入された行を取得する方法は?

Empid | EmployeeName
1 -------------ロン
2 ------------ジョン

部門

Depid | DepartmentName |ステータス| Empid
1 ---------------アカウント--------- 1 --------- 1
2 -------- -------- HR ---------------- 1 --------- 1
3 ----------- ----ファイナンス---------- 1 --------- 2
4 ---------------デザイン----- ------ 1 --------- 2

ここで私は2つのテーブルの従業員と部署を持っています。 1つの従業員は、2つの部署のempid = 1、すなわち財務および設計の2つの部門のempid = 2のように、異なる部門に属している可能性があります。
例えば、empid = 1がdepid = 1とdepid = 2に挿入されているので、emid = 2の最後に挿入された行であるdepid = 2を取得しようとしています。 = 4.
今、問題は、私のLINQ結合が必要な出力を提供していないことです。
私はLINQのへの新しい非常に多くいますので、助けは非常以下

あなたをappreciated.ThankされますがEmployee.Empidは、主キー、この可能性を行うには、粗な方法であれば、私のLINQは

var empDepList = (from D in db.Department.Where(x => x.Status == 1) 
        join E in db.Employee on D.Empid equals E.Empid 
        select new 
        { 
        D.DepartmentName, E.EmployeeName 
        }).ToList(); 
+1

最後に挿入された内容をデータ(どの列)で確認できますか? –

+0

@GiladGreen DepId = 2およびDepId = 4。 – CarrotCrop

+0

しかし、もしあなたがテーブルの順序でそうでなければ、それを知っていますか? –

答えて

1

に参加しています

var empDepList = 
    (from D in db.Department 
    join E in db.Employee on D.Empid equals E.Empid 
    where D.Status == 1 
    orderby E.Empid, D.Depid descending 
    select new { 
     D.DepartmentName, E.EmployeeName 
    }).FirstOrDefault(); 
+0

あなたはあなたが提案したLinqを使用してリスト内のデータを返すことができます – CarrotCrop

+0

「最後の挿入行」だけでなく、たぶん私は誤解しました。 – tigerswithguitars

+0

このクエリは、1つの値のみを返すことはできません。 –

0

のtryコード:以下のようになり

をあなたの結果を達成に使用するか、サブクエリグループを使用していました。

var empDepList = (from E in db.Employee     
       select { 
       DepartmentName= db.Department.where(c=>c.status==1 && c.Empid==E.Empid).LastOrDefault()==null?"":db.Department.where(c=>c.status==1 && c.Empid==E.Empid).LastOrDefault().DepartmentName, 
       EmployeeName= E.EmployeeName 
       }).ToList(); 
関連する問題