如何在C#中使用多列动态DataTable中要执行的操作组? [英] How to perform group by operation in dataTable using multiple columns dynamically in c#?

查看:326
本文介绍了如何在C#中使用多列动态DataTable中要执行的操作组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要组列使用LINQ动态即用户将选择在运行时表和列





例如:上表有领地,



状态,BANKNAME,



假设用户已经选择了这些列分组(区域,银行名称)



< ?p>如何使用LINQ来做到这一点。


解决方案

您可能需要使用的 System.Linq.Dynamic

  VAR领域=新的List<串GT;(){领土,银行名称}; 
变种qfields =的string.join(,,fields.Select(X =>中它[\,+ X +\]为+ X));

变种Q = DT
.AsEnumerable()
.AsQueryable()
.GroupBy(新的(+ qfields +),它)
。选择(新的(它作为数据));
的foreach(在Q动态D)
{
的foreach(在d.Data VAR行)
{
//在这里做你的工作,用d.Territory
}
}

检查这个帖子的Split~~V一个DataTable成多个数据表基于名单上列名


I need to group columns using linq dynamically i.e. user will select table and columns at runtime.

Ex: The above table has Territory,

State, BankName,

Assume user has selected these columns for grouping (Territory,Bank Name)

How can use linq to do this?

解决方案

you may want to use System.Linq.Dynamic

var fields = new List<string>() { "Territory", "Bank Name"};
var qfields = string.Join(", ", fields.Select(x => "it[\"" + x + "\"] as " + x));

var q = dt
    .AsEnumerable()
    .AsQueryable()
    .GroupBy("new(" + qfields + ")", "it")
    .Select("new (it as Data)");
foreach (dynamic d in q)
{
    foreach (var row in d.Data)
    {
       // Do your work here, using d.Territory
    }  
}

Check this post Split a Datatable into multiple Datatables based on a list of column names

这篇关于如何在C#中使用多列动态DataTable中要执行的操作组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆