将DataTable中数据进行分组,不写SQL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将DataTable中数据进行分组,不写SQL相关的知识,希望对你有一定的参考价值。
是这样的,一个DATASET中有几个DATATABLE,然后将这个DATASET中的数据传到水晶报表中进行显示,要求一页显示14条,请问应该怎么弄?
参考技术A SELECT * FROM(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 14
)
WHERE RN >= 1追问
说了不写SQL啊
追答那你去代码区去问。。。
winform中如何对一个 datatable 中的数据 进行 分组统计 需要 count 和group by
winform中如何对一个 datatable 中的数据 进行 分组统计 需要 count 和group by
参考技术A 1 一种方式是借用linq2 自己写代码处理
a 分组排序
public static void GroupByDT(ref DataTable dt,string strColumName,string strSortColumnName)
if (dt == null && dt.Rows.Count == 0)
else
DataTable dtResult = dt.Clone();
DataTable dtSortResult = dt.Clone();
if(dt.Rows.Count == 1)
dtResult.ImportRow(dt.Rows[0]);
else
dtSortResult = SortDT(dt, strSortColumnName);
for (int i = 0; i < dtSortResult.Rows.Count; i++)
for (int j = dtSortResult.Rows.Count-1; j >= 0; j--)
if(dtSortResult.Rows.Count > 0)
if (dtSortResult.Rows[i][strColumName] == dtSortResult.Rows[j][strColumName])
string strPrjID = dtSortResult.Rows[j][strColumName].ToString();
dtResult.ImportRow(dtSortResult.Rows[j]);
dtSortResult.Rows.Remove(dtSortResult.Rows[j]);
if (i != 0) i--; else
if (j != dtSortResult.Rows.Count) j++;
else if (j == 0) j++;
dt.Clear();
dt.Merge(dtResult);
b count 汇总计算
public static DataTable CalculateSumInfo(DataTable dt)
DataTable dtResult = dt.Copy();
object objsumDebit = dtResult.Compute("sum(Debit)", "TRUE");
object objsumCredit = dtResult.Compute("sum(Credit)", "TRUE");
decimal surplusFund = Math.Round((Convert.ToDecimal(objsumDebit) - Convert.ToDecimal(objsumCredit)), 2);
DataRow row = dtResult.NewRow();
row["SurplusFund"] = surplusFund;
dtResult.Rows.Add(row);
return dtResult;
本回答被提问者和网友采纳 参考技术B linq to datatable
以上是关于将DataTable中数据进行分组,不写SQL的主要内容,如果未能解决你的问题,请参考以下文章