С помощью 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
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 });
Поскольку компилятор выполняет этот перевод за вас, запустите Reflector и посмотрите.
Во-первых, основной ответ:
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 };
});
}
Теперь, конечно, этот код можно написать немного красивее с помощью лямбда-выражений и тому подобного,