C# datatable 筛选,累加。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# datatable 筛选,累加。相关的知识,希望对你有一定的参考价值。

有两张表:会员信息表和会员签到表,现在要在会员签到表中查找某一时段的会员签到信息并计算签到次数,同时根据会员名称去会员信息表中查询该会员的具体信息。各位帮帮忙,提供个思路。

参考技术A SQL语句问题
SELECT COUNT(列名) FROM table_name
这样就可以得到签到次数;
至于会员信息 双表连接下就可以查询了啊

SELECT 会员信息字段,COUNT(列名) FROM 会员信息表,会员签到表
where 会员信息表.字段=会员签到表。字段
此处的字段为两表都有的字段,根据这个字段把两张表联系起来追问

是这样,两张表,现在我要根据时间来筛选这段时间会员签到情况,
select * from 签到表 where time> startTime and time <endTime。
例如:得到的数据如下:
会员A 签到时间:2012-1-2
会员B 签到时间:2012-2-3
会员C 签到时间:2012-3-4
会员A 签到时间:2012-4-5
会员B 签到时间:2012-5-4。
筛选得到的数据放入dataTable中,我想到显示到界面上结果是: A :签到2次,B签到2次,C签到1次。

追答

select count(*) as num,会员字段 from 表名 group by 会员字段,会员字段

如何通过c#筛选excel里的指定内容

//那就全部读到datatable里,然后在判断
using System;   
using System.Collections.Generic;   
using System.Text;   
using System.Data;   
using System.Data.OleDb;   
using System.Data.SqlClient;   
using System.IO;   
using Microsoft.Office.Interop.Excel;   
namespace TestAccess   
   
    class Program   
       
        static void Main(string[] args)   
           
            string strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;";   
            strConnection += @"Data Source=C:\\Documents and Settings\\v-changl\\My Documents\\couse.xlsx;";   
            strConnection += "Extended Properties=\\"Excel 12.0 Xml;HDR=YES\\";";   
            OleDbConnection objConnection = new OleDbConnection(strConnection);   
            objConnection.Open();   
            OleDbDataAdapter myCommandd = new OleDbDataAdapter("select * from [Sheet1$]", objConnection);   
            DataSet ds = new DataSet();   
            myCommandd.Fill(ds, "[Sheet1$]");   
            System.Data.DataTable dt = ds.Tables["[Sheet1$]"];   
            Console.WriteLine(dt.Columns[0].ToString());   
            Console.WriteLine(dt.Columns[1].ToString());   
            DataRow drDisplay = dt.Rows[0];   
            int[] num = new int[dt.Columns.Count];   
            for (int j = 0; ; )   
               
                for (int i = 0; i < dt.Columns.Count; i++)   
                   
                    if (drDisplay[i] is DBNull) ;   
                    else  
                        num[i] += Convert.ToInt32(drDisplay[i]);   
                   
                if (++j >= dt.Rows.Count) break;   
                drDisplay = dt.Rows[j];   
               
            objConnection.Close();   
            object MissingValue = Type.Missing;   
            Microsoft.Office.Interop.Excel.Application app = new Application();   
            Microsoft.Office.Interop.Excel.Workbook wbook = app.Workbooks.Open(@"C:\\Documents and Settings\\v-changl\\My Documents\\couse.xlsx", MissingValue,   
MissingValue, MissingValue, MissingValue,   
MissingValue, MissingValue, MissingValue,   
MissingValue, MissingValue, MissingValue,   
MissingValue, MissingValue, MissingValue,   
MissingValue);   
            Microsoft.Office.Interop.Excel.Worksheet wsheet = wbook.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;   
            for (int i = 0; i < dt.Columns.Count; i++)   
               
                //注意下面是i+1,,excel小标默认从1开始   
                wsheet.Cells[dt.Rows.Count + 2, i + 1] = num[i].ToString();   
               
            wbook.Save();   
            wbook.Close(true, null, null);   
            System.Runtime.InteropServices.Marshal.ReleaseComObject(wsheet);   
            System.Runtime.InteropServices.Marshal.ReleaseComObject(wbook);   
            System.Runtime.InteropServices.Marshal.ReleaseComObject(app);   
            wsheet = null;   
            wbook = null;   
            app = null;   
            GC.Collect();   
           
       
参考技术A

参考以下更为简洁的方法(需要引用Spire.XLS.dll)

//创建Workbook对象
Workbook workbook = new Workbook();
//加载现有的Excel文档
workbook.LoadFromFile(@"C:\\Users\\Administrator\\Desktop\\sample.xlsx");

//获取第一个工作表
Worksheet sheet = workbook.Worksheets[0];

//获取筛选器对象
AutoFiltersCollection filters = sheet.AutoFilters;
//设置筛选器的添加位置:第二列
filters.Range = sheet.Range[1, 2, sheet.LastRow, 2]; 
//添加筛选项目            
filters.AddFilter(0, "测试");
//执行筛选f
ilters.Filter(); 

//保存文档
workbook.SaveToFile("output.xlsx", ExcelVersion.Version2010);

执行程序后,筛选效果如下:

可参考原文

以上是关于C# datatable 筛选,累加。的主要内容,如果未能解决你的问题,请参考以下文章

复制DataTabe的Rows到另一个DataTable

复制DataTabe的Rows到另一个DataTable

C# DataTable.Select()根据条件筛选数据

C# DataTable.Select()根据条件筛选数据

C# DataTable.Select()根据条件筛选数据

C# DataTable -> 需要根据列值生成一个ID