簡體   English   中英

LINQ SELECT TAKE 1每行

[英]LINQ SELECT TAKE 1 EACH ROW

我如何選擇在linq的列中僅返回1行的每個數據取1。 因為當我放.Take(1)時,只會出現1行結果,但我想用不同的條目輸入2行結果

弄清楚這是我的意思 在此處輸入圖片說明

在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;
        }

結果 在此處輸入圖片說明

有什么建議嗎? 將對我有很大幫助。 謝謝

您可以使用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();

Take僅返回前n個元素。 我認為您需要嘗試使用Distinct方法。

因此,您要使用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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM