C# LINQ选择每行取1
如何在linq中只返回1行的列中选择take 1。因为当我放置.Take(1)时,只会显示一行结果,但我希望有两行结果,并且具有不同的条目 我想说清楚,这就是我的意思 在c#中,这是我的疑问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)
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();