0

データグリッドビューにlinQの結果を表示しようとすると、メモリ不足でエラーが発生しました。データグリッドビューの行に制限はありますか?41299440を表示したい

これはエラーメッセージです

A first chance exception of type 'System.OutOfMemoryException'
occurred in System.Drawing.dll

これはlinQコードです

var sets =
    from a in patient
    from b in patient
    from c in patient
    from d in patient
    from l in patient
    where a.VisitNum < b.VisitNum 
          && b.VisitNum < c.VisitNum 
          && c.VisitNum < d.VisitNum 
          && d.VisitNum < l.VisitNum

    select new { a, b, c, d, l };

これで結果を表示する方法

object[] buffer = new object[5];
List<DataGridViewRow> rows = new List<DataGridViewRow>();
foreach (var custObj in sets)
{
    buffer[0] = custObj.a.VisitNum;
    buffer[1] = custObj.a.ID;
    buffer[2] = patientname;
    buffer[3] = custObj.a.date;
    buffer[4] = description(Convert.ToInt32(custObj.a.RaId));
    rows.Add(new DataGridViewRow());
    rows[rows.Count - 1].CreateCells(dataGridView1, buffer);

    buffer[0] = custObj.b.VisitNum;
    buffer[1] = custObj.b.ID;
    buffer[2] = patientname;
    buffer[3] = custObj.b.date;
    buffer[4] = description(Convert.ToInt32(custObj.b.RaId));
    rows.Add(new DataGridViewRow());
    rows[rows.Count - 1].CreateCells(dataGridView1, buffer);

    buffer[0] = custObj.c.VisitNum;
    buffer[1] = custObj.c.ID;
    buffer[2] = patientname;
    buffer[3] = custObj.c.date;
    buffer[4] = description(Convert.ToInt32(custObj.c.RaId));
    rows.Add(new DataGridViewRow());
    rows[rows.Count - 1].CreateCells(dataGridView1, buffer);

    buffer[0] = custObj.d.VisitNum;
    buffer[1] = custObj.d.ID;
    buffer[2] = patientname;
    buffer[3] = custObj.d.date;
    buffer[4] = description(Convert.ToInt32(custObj.d.RaId));
    rows.Add(new DataGridViewRow());
    rows[rows.Count - 1].CreateCells(dataGridView1, buffer);

    buffer[0] = custObj.l.VisitNum;
    buffer[1] = custObj.l.ID;
    buffer[2] = patientname;
    buffer[3] = custObj.l.date;
    buffer[4] = description(Convert.ToInt32(custObj.l.RaId));
    rows.Add(new DataGridViewRow());
    rows[rows.Count - 1].CreateCells(dataGridView1, buffer);
    rows.Add(new DataGridViewRow());                           
}
dataGridView1.Rows.AddRange(rows.ToArray());

助言がありますか?

4

0 に答える 0