Paramu1973 Ответов: 1

объект DataTable.выберите строки по первой строке ввода поля даты.


Привет у меня есть следующие записи
entry_date, employee_id, employee_name, details
10/11/2018      1        KING           PRODUCTION
10/11/2018      2        PRINCE         TYPING
11/11/2018      2        PRINCE         HR
11/11/2018      3        KANNAN         SPORTS
11/11/2018      7        RAVI           ADMIN
12/11/2018      4        KUMAR          ACCOUNTS
13/11/2018      5        RAMAN          PRODUCTION
13/11/2018      7        RAVI           HR

From the above records in datatable I wish to select the first record /per day
like the following
10/11/2018      1        KING           PRODUCTION
11/11/2018      2        PRINCE         HR
12/11/2018      4        KUMAR          ACCOUNTS
13/11/2018      5        RAMAN          PRODUCTION

Возможно ли это?

Спасибо

Что я уже пробовал:

Выберите строки из DataTable в определенные даты &амп; минимальное значение ид_сотрудника

OriginalGriff

Поэтому покажите нам код, который вы пробовали, и объясните, что он делает, чего вы не ожидали, или не делает того, что вы сделали.

Используйте виджет "улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

1 Ответов

Рейтинг:
8

RickZeeland

using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Linq;

            // Add columns
            DataTable dt = new DataTable();
            dt.Columns.Add("entry_date");
            dt.Columns.Add("employee_id");
            dt.Columns.Add("employee_name");
            dt.Columns.Add("details");

            // Add test data
            dt.Rows.Add(new string[] { "10/11/2018", "2", "PRINCE", "TYPING" });
            dt.Rows.Add(new string[] { "10/11/2018", "1", "KING", "PRODUCTION" });
            dt.Rows.Add(new string[] { "11/11/2018", "7", "RAVI", "ADMIN" });
            dt.Rows.Add(new string[] { "11/11/2018", "3", "KANNAN", "SPORTS" });
            dt.Rows.Add(new string[] { "11/11/2018", "2", "PRINCE", "HR" });
            dt.Rows.Add(new string[] { "12/11/2018", "4", "KUMAR", "ACCOUNTS" });
            dt.Rows.Add(new string[] { "13/11/2018", "7", "RAVI", "HR" });
            dt.Rows.Add(new string[] { "13/11/2018", "5", "RAMAN", "PRODUCTION" });

            IEnumerable<DataRow> result = dt.AsEnumerable()
                .OrderBy(r => r.Field<string>("entry_date"))
                .ThenBy(r => r.Field<string>("employee_id"))
                .GroupBy(r => r.Field<string>("entry_date")).Select(g => g.First());

            foreach (var dtrow in result)
            {
                Debug.Print(string.Join("\t", dtrow.ItemArray));
            }