2013-05-03 62 views
0

所以我有一個DataSet,我將其視爲一個IEnumerable對象,然後應用LINQ表達式將模數組收集到var g中。這裏是代碼隱藏...嘗試從Linq綁定GridView,不知道如何提取我需要的數據

protected void Page_Load(object sender, EventArgs e) 
    { 
     LinqSamples samples = new LinqSamples(gvNumbers, this.Page); 
     samples.DataSetLinq40(); 
    } 

    private class LinqSamples 
    { 
     private DataSet testDS; 
     private GridView _gv; 
     private Page _pg; 

     public LinqSamples(GridView gv, Page pg) 
     { 
      testDS = TestHelper.CreateTestDataSet(pg); 
      _gv = gv; 
      _pg = pg; 
     } 

     public void DataSetLinq40() 
     { 
      var numbers = testDS.Tables["Numbers"].AsEnumerable(); 

      var numberGroups = from n in numbers 
           group n by n.Field<int>("number") % 5 into g 
           select new { Remainder = g.Key, Numbers = g }; 

      _gv.DataSource = numberGroups; 
      _gv.DataBind(); 
     } 
    } 

     internal static DataSet CreateTestDataSet(Page pg) 
     { 
      DataSet ds = new DataSet(); 

      // Customers Table 
      ds.Tables.Add(CreateNumbersTable()); 

      ds.AcceptChanges(); 
      return ds; 
     } 

     private static DataTable CreateNumbersTable() 
     { 
      int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; 
      DataTable table = new DataTable("Numbers"); 
      table.Columns.Add("number", typeof(int)); 

      foreach (int n in numbers) 
      { 
       table.Rows.Add(new object[] { n }); 
      } 
      return table; 
     } 

...並在.aspx頁面...

  <asp:GridView ID="gvNumbers" runat="server" AutoGenerateColumns="false"> 
     <Columns> 
      <asp:BoundField HeaderText="Group" DataField="Remainder" /> 
      <asp:BoundField HeaderText="Number" DataField="Numbers" /> 
     </Columns> 
    </asp:GridView> 

我要的是一列在GridView有模組,例如0,另一列包含該組中的所有數字,逗號分隔,因此0代表「0,5」,1代表「1,6」,2代表2, 7「等。我怎樣才能做到這一點與我已經擁有的linq結果,其中包含的數據?

當我運行頁第二欄顯示,g是類型System.Collections.Generic.List1[System.Data.DataRow]

回答

1

你可能assinging查詢到數據源,而不是收集,使用.ToList()

_gv.DataSource = justNums.ToList(); 
_gv.DataBind(); 
+0

不後悔,我做了之後的編輯。它*必須是我對Linq表達式中的'Numbers = g'子句做一些事情來使它成爲一個字符串列表或其他東西。 – MassStrike 2013-05-03 15:04:34

+0

您可以使用羣組功能,例如您可以使用g.Count()獲取組中元素的數量。 – Adil 2013-05-03 15:34:30

+0

什麼是'g.GetAll()'的等價物? – MassStrike 2013-05-03 15:43:13

相關問題