2014-01-24 37 views
0

我怎樣才能選擇1只LINQ中的每個數據列,只返回1行。因爲當我穿上。取(1)只有1行的結果會出現,但我想有不同的入口2行的結果LINQ SELECT TAKE 1每行

,使其在這裏明確就是我的意思enter image description here

在C#

,這裏是我的查詢

using (PharmacyDBEntities entities = new PharmacyDBEntities()) 
     { 
      var positem = (from a in entities.POSEntries.Take(1) 
          where a.Invoice.AccountID == authLogin.userid && a.Invoice.InvoiceStatusID == 1 
          select new 
          { 
           a.Item.ItemCode, 
           a.Item.Name, 
           Quantity = (from b in entities.POSEntries where b.Invoice.AccountID == authLogin.userid && b.Invoice.InvoiceStatusID == 1 select b).Count(), 
           a.Item.SellingPrice 
          }).ToList(); 
      gcItemList.DataSource = positem; 
     } 

而結果 enter image description here

有任何建議傢伙?會對我有很大的幫助。謝謝

回答

0

所以,你想要Distinct()而不是Take(1)?沿着這些路線的東西:

var positem = (from a in entities.POSEntries 
    where a.Invoice.AccountID == authLogin.userid && a.Invoice.InvoiceStatusID == 1 
         select new 
         { 
          a.Item.ItemCode, 
          a.Item.Name, 
          Quantity = (from b in entities.POSEntries where b.Invoice.AccountID == authLogin.userid && b.Invoice.InvoiceStatusID == 1 select b).Count(), 
          a.Item.SellingPrice 
         }).Distinct().ToList(); 
0

只返回前n個元素。我認爲你需要嘗試使用Distinct方法。

+0

感謝其幫助:d – mardagz

1

您可以使用LINQ GroupBy

var positem = entities.POSEntries.Where(a=> a.Invoice.AccountID == authLogin.userid && a.Invoice.InvoiceStatusID == 1) 
       .GroupBy(x=>x.Item.ItemCode).Select(g=> new { 
           g.Key, 
           g.First().Item.Name, 
           Quantity = g.Count(), 
           g.First().Item.SellingPrice 
          }).ToList(); 
+0

非常感謝你的工作好。 – mardagz