Группировка в LINQ, Подсчет суммы

301
23 ноября 2017, 00:51

Привет коллеги. Есть данные по заказам, кто делает и сколько дней, вытянул основные поля это имя сотрудника и кол-во дней на выполнение заказа:

new OrderDetailsMini()
                           {
                               name = detailse.Employee.Name,
                               days = detailse.Price.TimeCraft * detailse.Count
                           });

Таких вот строк в коллекции много. Как мне сгруппировать людей по имени и посчитать сумму всех дней, которые им нужны на заказы? Можно это в LINQ сделать или нет? В SQL то легко, а вот что-то с EF я немного застрял.

Answer 1

Для группировки данных используйте GroupBy, для суммирования - Sum. Пример:

data
    .GroupBy(x => x.name, x=>x.days)
    .Select(x => new OrderDetailsMini {name = x.Key, days = x.Sum()})
Answer 2

Смею поправить

    static void Main(string[] args)
    {
        List<OrderDetailsMini> datal;
        datal = new List<OrderDetailsMini>();
        datal.Add(new OrderDetailsMini("Ваня", 15));
        datal.Add(new OrderDetailsMini("Ваcя", 25));
        datal.Add(new OrderDetailsMini("Егор", 5));
        datal.Add(new OrderDetailsMini("Ваня", 15));
        datal.Add(new OrderDetailsMini("Вера", 8));
        datal.Add(new OrderDetailsMini("Егор", 21));
        var spor = datal.GroupBy(x => x.name, x => x.days).Select(x=> new 
        OrderDetailsMini (x.Key, x.Sum())).ToArray();
        foreach (var item in spor)
        {
            Console.WriteLine("Name :{0}, days total :{1}",item.name, item.days);
        }
    }

class OrderDetailsMini
{
    public string name;
    public int days;

    public OrderDetailsMini(string name, int days)
    {
        this.name = name;
        this.days = days;
    }
}

Результат во изображении

READ ALSO
Запись во внутреннее хранилище Android Xamarin

Запись во внутреннее хранилище Android Xamarin

Пишу пробное приложение, простой рекордер стрима со штатной камеры и запись вmp4

297
Выбор элемента DataGridView

Выбор элемента DataGridView

Выбирается третий элемент в dataGridVie2, хотя нажимаю на любойКак сделать чтобы в dataGridView2

206
RegistryKey, c# не видит некоторые ключи

RegistryKey, c# не видит некоторые ключи

Здравствуйте, есть проблема с доступом к ключу, который создан через *reg файл

214
WinForms c# . Проложить путь к файлу

WinForms c# . Проложить путь к файлу

Как добавить в своей программе на c# WinForms searcher , при нажатии которого будет выскакивать проводник и нужно будет выбрать файл , после чего содержание...

234