2016-11-06 4 views
0

tblInsertLines의 견인 테이블, tblItem 및 tblInsertLines가 있습니다. 동일한 ItemId가 있지만 differnt ProdDate 및 ExpireDate와 함께 모든 항목의 고유 목록을 가져오고 싶지만 첫 번째 행을 선택하고 싶습니다. tblInsertLines 첫 번째 행은 가장 오래된 ProdDate를 포함합니다. 도움이 될 것입니다. 나는이 코드를 사용한다.다중 테이블에서 다른 테이블 선택

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

당신이 오래된 ProdDate에 따라 첫 번째 행을 얻을시겠습니까 시도 할 수 있습니다? – Eldeniz

+0

예. 또는 가장 오래 삽입 된 행 (lineId)에 따라. 이것은 또한 가장 오래된 것을 삽입합니다. –

답변

1

당신은

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 개체 목록이 없습니다 List Eldeniz

+0

대신 Item을 반환 할 수 있습니다. List Eldeniz

관련 문제