GroupBy с linq синтаксисом метода (не запрашивают синтаксис),

С помощью dplyr и stringr вы можете использовать mutate_all :

> df %>% mutate_all(funs(length = str_length(.)))

     col1     col2 col1_length col2_length
1     abc adf qqwe           3           8
2    abcd        d           4           1
3       a        e           1           1
4 abcdefg        f           7           1

19
задан Dane O'Connor 8 June 2009 в 21:21
поделиться

3 ответа

It would look like this:

var query = checks
    .GroupBy(c => string.Format("{0} - {1}", c.CustomerId, c.CustomerName))
    .Select (g => new { Customer = g.Key, Payments = g });
24
ответ дан 30 November 2019 в 03:43
поделиться

Поскольку компилятор выполняет этот перевод за вас, запустите Reflector и посмотрите.

2
ответ дан 30 November 2019 в 03:43
поделиться

Во-первых, основной ответ:

var query = checks.GroupBy<Customer, string>(delegate (Customer c) {
    return string.Format("{0} - {1}", c.CustomerId, c.CustomerName);
}).Select(delegate (IGrouping<string, Customer> customerGroups) {
    return new { Customer = customerGroups.Key, Payments = customerGroups };
});

Тогда как вы сами в этом разбираетесь?

Сначала загрузите Reflector из здесь и установите его.

Затем создайте образец программы, такой как небольшая консольная программа, содержащая код, который вы хотите проанализировать. Вот код, который я написал:

using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication11
{
    public class Customer
    {
        public Int32 CustomerId;
        public Int32 CustomerName;
    }

    class Program
    {
        static void Main(string[] args)
        {
            var checks = new List<Customer>();
            var query = from c in checks
                        group c by String.Format("{0} - {1}", c.CustomerId, c.CustomerName)
                            into customerGroups
                            select new { Customer = customerGroups.Key, Payments = customerGroups };
        }
    }
}

Затем вы создаете его, открываете отражатель и просите его открыть соответствующий файл .exe.

Затем вы переходите к рассматриваемому методу, который в моем случае был ConsoleApplication11.Program.Main .

Уловка здесь заключается в том, чтобы перейти на страницу параметров Reflector и попросить его показать синтаксис C # 2.0, который заменит Linq соответствующими вызовами статических методов. Это дает мне следующий код:

private static void Main(string[] args)
{
    List<Customer> checks = new List<Customer>();
    var query = checks.GroupBy<Customer, string>(delegate (Customer c) {
        return string.Format("{0} - {1}", c.CustomerId, c.CustomerName);
    }).Select(delegate (IGrouping<string, Customer> customerGroups) {
        return new { Customer = customerGroups.Key, Payments = customerGroups };
    });
}

Теперь, конечно, этот код можно написать немного красивее с помощью лямбда-выражений и тому подобного,

8
ответ дан 30 November 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: