2012-07-18 48 views
2

我一直在四處搜尋,並希望得到一些想法 - 我目前有一個GridView從linq數據源獲取其源,該數據源在onselecting命令上獲取其數據。然而,我試圖實現分組...用C#和LINQ進行分組編程(選擇可能嗎?)

任何僞代碼或指示我應該如何做到這一點?關上我的頭我的代碼如下所示:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataSourceID="LinqDataSource1" EmptyDataText="There are no data records to display."> 

..欄目設置,併到一個使用LinqDataSource關閉GridView控件然後標記...

到的.cs頁面
<asp:LinqDataSource ID="LinqDataSource1" runat="server" onselecting="LinqDataSource_Selecting" > 

public void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e) 
{ 
var db = new MyDataContext()) 
var orders = from order in db.tbl_orders 
select new {(order.Id, order.customer, order.state); 
e.Result = orders; 
} 

我想弄清楚在哪裏以及如何在所有這些中實現組。大多數我見過的例子都是在linqDataSource代碼中進行分組(或者我認爲它與onSelecting有關的有趣錯誤),或者狡猾地暗示我購買了X產品。我試圖按國家對訂單進行分組 - 所以最終結果將如下所示:

California (3 orders) 
ID Order 
ID Order 
ID Order 
Montana (1 orders) 
ID Order 

謝謝!

+0

你並沒有像使用排序然後使用匯總標題那樣真正地進行分組(在技術上,我認爲標題是「分組的」)。可以有幾種方法,但都不一定很簡單。一些嘗試完成此操作的鏈接:http://couldbedone.blogspot.com/2007/06/gridview-very-simple-grouping.html或http://www.agrinei.com/gridviewhelper/gridviewhelper_en.htm – GunnerL3510 2012-07-18 01:06:04

回答

0

嗨這裏的例子中,你如何能做到這

 public void Button_Click() 
    { 
     List<Order> ods = new List<Order>{new Order(){State="cali",ID=1}, 
       new Order(){State="cali",ID=2}, 
       new Order(){State="nali",ID=3}, 
       new Order(){State="pali",ID=4}, 
       new Order(){State="pali",ID=5}, 
     }; 
     List<Grouping> groups = new List<Grouping>(); 
     var orders = ods.GroupBy(g => g.State); 
     foreach (var order in orders) 
     { 
      Grouping group = new Grouping() { State = order.Key, Orders = new List<Order>(), IDs = new List<int>() }; 
      order.ToList().ForEach(o => { group.Orders.Add(o); group.IDs.Add(o.ID); }); 
      groups.Add(group); 
     } 

    } 
    public class Grouping 
    { 
     public string State { get; set; } 
     public List<Order> Orders { get; set; } 
     public List<int> IDs { get; set; } 
    } 
    public class Order 
    { 
     public string State 
     { 
      get; 
      set; 
     } 
     public int ID 
     { 
      get; 
      set; 
     } 
    } 

這正是你想要的,除了DataSource和類是不同的,但邏輯是相同的事情。我希望這會幫助你明白。