2016-11-06 7 views
0

tblInsertLinesにtowテーブルtblItemとtblInsertLinesがありますが、同じItemIdを持っていますが、differnt ProdDateとExpireDateを持っています。すべてのアイテムの個別リストを取得したいのですが、 tblInsertLines最初の行には最も古いProdDateが含まれています。 助けていただければ幸いです。私はこのコードを使用します。複数のテーブルからDistinctを選択する

public static List<Item> getItemList() 
    { 
     using (var db = new AWarehouseDataClassesDataContext()) 
     { 

      var list = (from i in db.tblItems 
         join e in db.tblInsertLines on i.ItemId equals e.ItemId 
         orderby i.NameE 
         select new Item 
         { 
          code = i.Code, 
          itemId = i.ItemId, 
          lastUpdate = i.LastUpdate, 
          nameA = i.NameA, 
          nameE = i.NameE, 
          qty = i.Qty, 
          prodDate = e.ProdDate, 
          expireDate = e.ExpireDate, 
          updatedBy = i.UpdatedBy 
         }).Distinct(); 
      return list.ToList(); 
     } 
    } 
+0

を試すことができますか? – Eldeniz

+0

はい。または、挿入された最も古い行(lineId)に従います。これにより、最も古いものが挿入されます。 –

答えて

1

あなたが最も古いProdDateに応じて、最初の行を取得したいですか

var list= (from i in db.tblItems 
       join e in db.tblInsertLines on i.ItemId equals e.ItemId 
       where e.counter > 0 
       orderby i.NameE 
       group new { i, e } by e.ItemId into g 
       select new Item 
       { 
        code = g.First().i.Code, 
        itemId = g.Key, 
        lastUpdate = g.First().i.LastUpdate, 
        nameA = g.First().i.NameA, 
        nameE = g.First().i.NameE, 
        qty = g.First().i.Qty, 
        prodDate = g.Min(x=>x.e.ProdDate), 
        expireDate = g.First().e.ExpireDate, 
        updatedBy = g.First().i.UpdatedBy 
       }).ToList(); 
+0

私はリストを返さなければならないことに注意してください。 list.ToList();を使用できません。 –

+0

First()メソッドのみ返すItemオブジェクトnot List Eldeniz

+0

代わりにItemを返すことができますList Eldeniz

関連する問題