我有一个外部方法,如下面的签名
double mymethod(this IEnumerable<double> data)
我的数据集如下..
ColA ColB
1 1
1 2
2 1
2 3
and so on..
我希望按照ColA进行分组,然后对ColB的值运行该方法。
结果会是......
GrColA ResultColB
1 5
2 9
真诚感谢所有帮助。
由于
答案 0 :(得分:0)
您可以尝试这样的事情:
var result = data.GroupBy(x=>x.ColA)
.Select(gr=>new{
GrColA = gr.Key,
ResultColB = gr.Select(x=>Convert.ToDouble(x.ColB).mymethod()
});
ColA
mymethod
。答案 1 :(得分:0)
尝试这样的事情
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication33
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("ColA", typeof(int));
dt.Columns.Add("ColB", typeof(int));
dt.Rows.Add(new object[] { 1,1,});
dt.Rows.Add(new object[] { 1, 2, });
dt.Rows.Add(new object[] { 2, 1, });
dt.Rows.Add(new object[] { 2, 3, });
var groups = dt.AsEnumerable().GroupBy(x => x.Field<int>("ColA")).ToList();
var results = groups.Select(x => x.Select(y => new { a = x.Key, b = y.Field<int>("ColB") }).ToList()).ToList();
}
}
}
答案 2 :(得分:0)
使用&#34; ColA&#34;,&#34; ColB&#34;创建一个类类型。属性如下:
public class Datum
{
public double ColA { get; set; }
public double ColB { get; set; }
}
然后初始化您的数据集对象
IEnumerable<Datum> dataSet = GetData() //Some method to get data
并在您的数据集上执行以下操作
dataSet.GroupBy(a => a.ColA).Select(gr => new { GrColA = gr.Key, ResultColB = mymethod(gr));