2

以下にコードを貼り付けました。ここで、どこにどのコードを挿入するかについて完全に迷っています。たとえば、開始日 (今日の日付 - 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;
    }
4

1 に答える 1

1

あなたはそれが として入ってくると言っていましたが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 拡張機能がそれらで機能するようにするためです。

于 2014-06-11T23:47:39.197 に答える