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]
不後悔,我做了之後的編輯。它*必須是我對Linq表達式中的'Numbers = g'子句做一些事情來使它成爲一個字符串列表或其他東西。 – MassStrike 2013-05-03 15:04:34
您可以使用羣組功能,例如您可以使用g.Count()獲取組中元素的數量。 – Adil 2013-05-03 15:34:30
什麼是'g.GetAll()'的等價物? – MassStrike 2013-05-03 15:43:13