2014-02-19 129 views
1

我是LINQ的新手,所以在編寫查詢時顯然面臨困難。如何使用Linq查詢檢索數據

這裏是我的代碼:

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=2} 
    }; 

    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.Key.customerid 
           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), 
               *OrderIDwithMaxQuanCount=customergroups.Select(x=>x.o.Orderid).Where();* 
           }; 

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

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

在這裏,我所試圖做的是與訂單詳細信息與一些condidtions沿着打印客戶詳細信息。

我需要打印具有最高要求的數量客戶的訂單ID

我能夠retieve的MaxOrderCount特定客戶,但無法獲取其最大數量的訂單id

在查詢中,SELECT子句中的最後一行,我面臨着如何寫

請幫助一些困難..

回答

4

您可以訂購,然後再選擇這樣的:

OrderIDwithMaxQuanCount=customergroups.OrderByDescending(x => x.o.Quantity) 
             .Select(x => x.o.Orderid).FirstOrDefault() 
+0

@Aducci ......曾擔任Charm..have打破了我的頭長time..Thanks –

+0

@AvinashKothamasu,我很高興我能幫助:) – Aducci

+0

..我在這裏有一個小的疑問..我可以通過Quantity by order by子句下面的group by子句? –