c# - 仅显示 API 抓取数据后 90 天内的结果

标签 c# api datatable date-arithmetic date-comparison

下面粘贴了我的代码。现在我完全不知道在哪里插入什么代码,假设我只想显示开始日期在(今天的日期 - 90 天)内的数据。请帮助我。在这个问题上被困了数周。

顺便说一句,这段代码会在它通过API从另一个程序获取数据后运行。

public DataTable FGetHasData(int iMode)
    {
        DataTable dtHASDataReturn = new DataTable();
        DataTable dtHASData = new DataTable();
        string sSorter = String.Empty;

        if (iMode.Equals(0))
        {
            try
            {
                dtHASData = this.oHASData.RetrievePayments();


                dtHASData.Columns[0].ColumnName = "Agency Code";
                dtHASData.Columns[1].ColumnName = "Agency Name";
                dtHASData.Columns[2].ColumnName = "Patient Code";
                dtHASData.Columns[3].ColumnName = "Claim Code";
                dtHASData.Columns[5].ColumnName = "Insurance Company Name";
                dtHASData.Columns[6].ColumnName = "Amount";
                dtHASData.Columns[7].ColumnName = "Document Number";
                dtHASData.Columns[8].ColumnName = "To Print";
                dtHASData.Columns[9].ColumnName = "Payment Type";
                dtHASData.Columns[10].ColumnName = "Memo";
                dtHASData.Columns[11].ColumnName = "Balance Type";
                dtHASData.Columns[12].ColumnName = "RAP";
                dtHASData.Columns[13].ColumnName = "Outlier";

                sSorter = "periodstart";
            }                
            catch (Exception e)
            {
                this.FLogTrans(e.Message.ToString());
                return dtHASDataReturn;
            }

        }
        else if (iMode.Equals(1))
        {
            try
            {
                dtHASData = this.oHASData.RetrieveRemittanceAdvices();

                dtHASData.Columns[0].ColumnName = "Agency Code";
                dtHASData.Columns[1].ColumnName = "Agency Name";
                dtHASData.Columns[3].ColumnName = "Check Amount";
                dtHASData.Columns[4].ColumnName = "Remittance Advice Memo";
                dtHASData.Columns[5].ColumnName = "Insurance Company Name";
                dtHASData.Columns[6].ColumnName = "Amount Paid";
                dtHASData.Columns[7].ColumnName = "Net Reimbursement";
                dtHASData.Columns[8].ColumnName = "Withheld";
                dtHASData.Columns[9].ColumnName = "Document Number";
                dtHASData.Columns[10].ColumnName = "To Print";
                dtHASData.Columns[11].ColumnName = "Payment Type";
                dtHASData.Columns[12].ColumnName = "Memo";

                sSorter = "RADate";
            }
            catch (Exception e)
            {
                this.FLogTrans(e.Message.ToString());
                return dtHASDataReturn;
            }
        }

        DataView dvSorter = new DataView(dtHASData);

        if (this.FConfigVarRetriever(4).Equals("1"))
        {
            int iRowsMany = int.Parse(this.FConfigVarRetriever(5));

            dvSorter.Sort = sSorter + " desc";
            dtHASData = dvSorter.ToTable();

            if (iMode.Equals(0))
            {
                dtHASData.Columns[4].ColumnName = "Period Start";
            }
            else if (iMode.Equals(1))
            {
                dtHASData.Columns[2].ColumnName = "Remittance Advice Date";
            }

            dtHASDataReturn = dtHASData.AsEnumerable().Take(iRowsMany).CopyToDataTable();                
        }
        else if (this.FConfigVarRetriever(4).Equals("2"))
        {
            dvSorter.RowFilter = sSorter + " >= '" + this.FConfigVarRetriever(6) + "'";
            dvSorter.Sort = sSorter + " desc";
            dtHASData = dvSorter.ToTable();

            if (iMode.Equals(0))
            {
                dtHASData.Columns[4].ColumnName = "Period Start";
            }
            else if (iMode.Equals(1))
            {
                dtHASData.Columns[2].ColumnName = "Remittance Advice Date";
            }

            dtHASDataReturn = dtHASData;
        }


        return dtHASDataReturn;
    }

最佳答案

你说它以 IEnumerable 的形式出现,我假设该类具有以下结构:

public class Record
{
    DateTime StartDate {get; set;}
    //A whole bunch of other stuff
}

在这种情况下,我们将使用 Where 查询来进行过滤,并结合一些 DateTime 数学和比较:

IEnumerable<Record> results = original.Where(r => r.StartDate >= DateTime.Now.AddDays(-90));

然后,只要有“原始”数据,您就可以使用“结果”,这样您就可以只对过滤后的数据采取行动。

回复评论:

您可以将它放在您希望进行过滤的任何位置。我会在您实际尝试使用它之前立即将其放在:

dtHASData = dtHASData.Where(....);  //Add here
DataView dvSorter = new DataView(dtHASData);

没关系,它以数组的形式出现,它们是 IEnumerable,因此 LINQ 扩展可以对它们起作用。

关于c# - 仅显示 API 抓取数据后 90 天内的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24172241/

相关文章:

c# - 无法在插件注册工具中调试 Dynamics C# 插件

c# - 如何播放 WPF 声音文件资源

c# - 将自定义代码放在系统 namespace 中

android - ADK : How-To create a streaming IP Camera Application with android Camera API

java - PrimeFaces + DataTable(编辑行) + JAVA + MYSQL

c# - c# wpf 列表框的加载屏幕

rest - 如何为单个资源建模RESTful API?

java - 尝试将api中的数据获取到JSON时在JSONArray上使用NullPointer

javascript - 如何正确分页数据表中的结果(ajax,服务器端)?

c# - 将数据表转换为 IEnumerable<T> 以传递给 Result<T>(IEnumerable<T> 数据);