试图从Linq绑定GridView,不知道如何提取我需要的数据

本文关键字:提取 数据 何提取 Linq 绑定 GridView 不知道 | 更新日期: 2023-09-27 18:12:13

所以我有一个数据集,我将其视为IEnumerable,然后应用LINQ表达式将模组聚集到var g中。这里是代码背后…

    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绑定GridView,不知道如何提取我需要的数据

您可能正在将查询分配给数据源而不是集合,请使用.ToList()

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