Pertanyaan Kueri linq yang dikelompokkan berdasarkan


RowNum IMAGEID     SCANEDATE                COUNT
1      10000131    2012-07-04 00:00:00.000  1
2      10002626    2012-08-03 00:00:00.000  1
3      10003348    2012-09-06 00:00:00.000  1
4      10003589    2012-09-15 00:00:00.000  8
5      10003590    2012-05-15 00:00:00.000  8
6      10003591    2012-04-15 00:00:00.000  8
7      10003592    2012-03-15 00:00:00.000  8
8      10003595    2012-02-15 00:00:00.000  8
9      10003596    2012-09-15 00:00:00.000  8
10     10003598    2012-09-15 00:00:00.000  8
11     10003599    2012-09-15 00:00:00.000  8

Saya memiliki datatable di atas yang saya butuhkan untuk menerapkan permintaan LINQ untuk mendapatkan hasil sebagai berikut

1) Semua id gambar yang memiliki tanggal yang sama harus tercantum dalam sel yang sama (, dipisahkan), dan kolom hitung harus memiliki hitungan setiap tanggal tidak ada. ID gambar

 Scan Date   Image ID  Count


      11/27/2007 1001529,1001530,1001531,1001532,1001533,1001534,1001537,1001538,1001539,1001540,1001542    11

      11/20/2008 1002501,1002502,1002503,1002504,1002505,1002506,1002507,1002508,1002509,1002510,1002511,1002512,1002513,1002514,1002515,1002516,1002517,1002518,1002519,1002520,    20

      7/5/2011   1015237,1015238    2

      7/6/2011   1015248,1015249,1015259,1015260,1015286,1015287,1015288,1015289,1015290,1015291,1015292,1015293,1015294,1015295,1015296,1015297,1015347,1015348,1015358,1015359,    32
      1015370,1015371,1015381,1015382,1015396,1015397,1015410,1015411,1015412,1015413,1015429,1015430

      7/7/2011   1015444,1015445    2

Tolong beri saya pertanyaan untuk melakukan hal di atas.


4
2018-01-30 11:19


asal


Jawaban:


Baris tabel grup dengan bidang SCANEDATE. Kemudian proyeksikan setiap kelompok baris dengan memilih tanggal pemindaian (key of group), menggabungkan semua id gambar ke dalam string, dan menghitung jumlah baris dalam grup:

table.AsEnumerable()
     .GroupBy(r => r.Field<DateTime>("SCANEDATE"))
     .Select(g => new {
          ScanDate = g.Key,
          Ids = String.Join(",", g.Select(r => r.Field<int>("IIMAGEID"))),
          Count = g.Count()
      });

5
2018-01-30 11:24



var results = from p in tabel
              group p.IMAGEID  by p.SCANEDATE into g
              select new { SCANEDATE = g.Key, IMAGEID = g.ToList() };

Atau sebagai ekspresi non-query:

var results = tabel.GroupBy(p => p.SCANEDATE , p => p.IMAGEID ,
                         (key, g) => new { SCANEDATE = key, IMAGEID = g.ToList() });

Pada dasarnya isi grup (saat melihat sebagai IEnumerable<T>) adalah urutan nilai apa pun yang ada dalam proyeksi (p.car dalam kasus ini) yang ada untuk kunci yang diberikan.


1
2018-01-30 11:25