2014-01-24 4 views
0

Как выбрать один из 1 данных в столбце в linq, которые возвращают только 1 строку. Потому что, когда я поставил .Снять (1) только 1 результат строки будет появляться, но я хочу иметь 2 строки результата с различными записямиLINQ SELECT TAKE 1 EACH ROW

, чтобы понять, вот что я имею в виду 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