Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ选择每行取1_C#_Linq - Fatal编程技术网

C# LINQ选择每行取1

C# LINQ选择每行取1,c#,linq,C#,Linq,如何在linq中只返回1行的列中选择take 1。因为当我放置.Take(1)时,只会显示一行结果,但我希望有两行结果,并且具有不同的条目 我想说清楚,这就是我的意思 在c#中,这是我的疑问 using (PharmacyDBEntities entities = new PharmacyDBEntities()) { var positem = (from a in entities.POSEntries.Take(1)

如何在linq中只返回1行的列中选择take 1。因为当我放置.Take(1)时,只会显示一行结果,但我希望有两行结果,并且具有不同的条目

我想说清楚,这就是我的意思

在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;
        }
结果呢


有什么建议吗?会对我有很大帮助的。谢谢

Take仅返回前n个元素。我认为您需要尝试使用该方法。

那么,您想要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();

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