2014-02-20 2 views
2

Могу ли я сделать некоторые вещи, как это:Можно ли написать что-то вроде этого?

 public class Customer 
      { 
       public int cid { get; set; } 
       public string FirstName { get; set; } 
       public string LastName { get; set; } 
       public string City { get; set; } 

    public class Order 
     { 
      public int Orderid { get; set; } 
      public int customerid { get; set; } 
      public int Quantity { get; set; } 
     } 



    static void Main(string[] args) 
     { 

      List<Customer> customerList = new List<Customer> 
      { 
       new Customer(){cid=1,FirstName="Avinash",LastName="Kothamasu",City="Chennai"}, 
       new Customer(){cid=2,FirstName="Abhiram",LastName="Kumar",City="Chennai"}, 
      new Customer{cid=3,FirstName="Balu",LastName="Chinna",City="Chennai"}, 
      new Customer{cid=4,FirstName="Sai",LastName="Kothamasu",City="Bhimavaram"}, 
      new Customer{cid=5,FirstName="Harshita",LastName="Kothamasu",City="Bhimarvarm"}, 
      new Customer{cid=6,FirstName="Mounika",LastName="Kothamasu",City="Guntur"} 
     }; 

     List<Order> orderList = new List<Order> 
     { 
      new Order(){Orderid=11,customerid=1,Quantity=20}, 
      new Order(){Orderid=111,customerid=1,Quantity=10}, 
      new Order(){Orderid=22,customerid=2,Quantity=15}, 
      new Order(){Orderid=222,customerid=2,Quantity=8}, 
      new Order(){Orderid=22222,customerid=2,Quantity=50}, 
      new Order(){Orderid=33,customerid=3,Quantity=10}, 
      new Order(){Orderid=333,customerid=3,Quantity=5}, 
      new Order(){Orderid=44,customerid=4,Quantity=4}, 
      new Order(){Orderid=55,customerid=5,Quantity=1}, 
      new Order(){Orderid=66,customerid=6,Quantity=49} 
     }; 


     var OrderListforCustomers = (from c in customerList 
            join o in orderList on 
            c.cid equals o.customerid 
            where o.Quantity >= 1 && o.Quantity <= 50 
            group new { c, o } by new { o.customerid, c.FirstName, c.LastName, c.City } into customergroups 
            orderby customergroups.Select(x => x.o).Max(x => x.Quantity) descending, customergroups.Key.customerid descending 
            select new 
             { 
              CustomerID = customergroups.Key.customerid, 
              CustomerName = customergroups.Key.FirstName.ToUpper() + " , " + customergroups.Key.LastName.ToUpper(), 
              City = customergroups.Key.City, 
              MaximumQuantityCount = customergroups.Select(x => x.o).Max(x => x.Quantity), 
              OrderIDWithMaxCount = customergroups.Select(x => x.o).OrderByDescending(x => x.Quantity).Select(x => x.Orderid).FirstOrDefault() 
             } into result).Take(6); // Error here 

     Console.Write("CID" + " || "); 
     Console.Write("CustomerName" + " || "); 
     Console.Write("City" + " | "); 
     Console.Write("MaximumQuantityCount" + " || "); 
     Console.Write("OrderIDwithMaxQuantityCount"); 
     Console.WriteLine(Environment.NewLine); 

     foreach (var custgroup in limOrderListCust) 
     { 
      Console.Write(custgroup.CustomerID + " || "); 
      Console.Write(custgroup.CustomerName + " || "); 
      Console.Write(custgroup.City + " || "); 
      Console.Write(custgroup.MaximumQuantityCount + " || "); 
      Console.Write(custgroup.OrderIDWithMaxCount); 
      Console.Write(Environment.NewLine); 
     } 

     Console.ReadLine(); 

Я хочу, чтобы получить только верхние 6 записей из полученных данных запроса.

Я могу написать некоторые вещи, как:

var topdata=OrderListforCustomers .Take(6); 

, но я хочу, чтобы получить результат только в одном запросе.

Обновлено:

Ошибка я получаю:

A query body must end with a select clause or a group clause  

пожалуйста предложить

+3

Какая ошибка вы получаете там? – peter

+5

Просто удалите «в результат», который необходим только для продолжения. –

+0

Почему вы добавили это 'в результат'? –

ответ

3

Просто удалите пункт into result, он необходим только для продолжения.

Синтаксис выражения запроса подробно описан на http://msdn.microsoft.com/en-us/library/bb308959.aspx.

Вот соответствующие части:

запросы выражение :: = из-пункт запрос тело

запрос тело :: = запрос тело придаточного * окончательный запрос придаточные запрос-продолжение?

запросов продолжение :: = в ITEMNAME запросов тела

Как вы можете видеть, into result должен следовать тело запроса для того, чтобы быть действительным.

+0

@ kris..Yes..Its работа сейчас..thanks .. –

Смежные вопросы