0

したがって、IEnumerable として扱っている DataSet があり、モジュロ グループを var g に収集する LINQ 式を適用します。これがコードビハインドです...

    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 の 1 つの列にモジュロ グループ (たとえば 0) を持たせ、もう 1 つの列にそのグループ内のすべての数値をカンマ区切りで持たせることです。つまり、0 の場合は "0, 5" になります。 1 の場合は "1, 6"、2 の場合は "2, 7" などです。データを含む既に持っている linq の結果でこれを行うにはどうすればよいですか?

ページを実行すると、2 列目に g が型であることが示されますSystem.Collections.Generic.List1[System.Data.DataRow]

4

1 に答える 1

0

コレクションではなくデータソースにクエリを割り当てている可能性があります。.ToList() を使用してください。

_gv.DataSource = justNums.ToList();
_gv.DataBind();
于 2013-05-03T14:57:16.200 に答える