如何简化c#.net中的if条件和foreach条件?

如何简化c#.net中的if条件和foreach条件?,c#,model-view-controller,foreach,model,C#,Model View Controller,Foreach,Model,我的控制器中有一个重复的foreach条件。我如何简化它? 因为这个,我几乎达到了500行。我在每个条件下都使用这个 List<jewelry_dashboard_view_per_month> transactionmonthlynewloan = dashboardmanager.Get_MonthlyTransaction(search_branch, (monthlyonly + "01"), "N-", (monthlyonly +

我的控制器中有一个重复的foreach条件。我如何简化它? 因为这个,我几乎达到了500行。我在每个条件下都使用这个

List<jewelry_dashboard_view_per_month> transactionmonthlynewloan = dashboardmanager.Get_MonthlyTransaction(search_branch, (monthlyonly + "01"), "N-", (monthlyonly + no_of_items), no_of_items, monthlyonly);
myNewLoanMontlyList.Add(transactionmonthlynewloan);

List<jewelry_dashboard_view_per_month> transactionmonthlyrenewal = dashboardmanager.Get_MonthlyTransaction(search_branch, (monthlyonly + "01"), "R-", (monthlyonly + no_of_items), no_of_items, monthlyonly);
myRenewalMontlyList.Add(transactionmonthlyrenewal);
这就是foreach条件

if (myNewLoanMontlyList[0].Count != 0)
{
    foreach (var internal_monthly_newloan_data in myNewLoanMontlyList[0].SelectMany(c => c.id_data))
    {monthly_newloan_data_ID.Add(internal_monthly_newloan_data);}

    foreach (var internal_monthly_newloan_data in myNewLoanMontlyList[0].SelectMany(c => c.debit_data))
    {monthly_newloan_data_debit.Add(internal_monthly_newloan_data);}
}
else
{
    monthly_newloan_data_ID.Add(0);
    monthly_newloan_data_debit.Add(0);
};
//newloan
int newloan_data_id = 0;
DateTime newloan_data_transdate = DateTime.Parse((DateTime.Today).ToString());
decimal newloan_data_debit = 0;
string newloan_data_txnname = "";
string newloan_data_branchID = "";
foreach (var newloan_data in newloan)
{
    newloan_data_id = newloan_data.ID;
    newloan_data_transdate = DateTime.Parse((newloan_data.Transdate).ToString());
    newloan_data_debit = Decimal.Parse((newloan_data.Debit).ToString());
    newloan_data_txnname = newloan_data.TransactionName;
    newloan_data_branchID = newloan_data.BranchID;
};
datanewloan = new transaction_details()
{
    ID = newloan_data_id,
    Transdate = DateTime.Parse(newloan_data_transdate.ToString("yyyy-MM-dd")),
    Debit = Decimal.Parse(newloan_data_debit.ToString()),
    TransactionName = newloan_data_txnname,
    BranchID = newloan_data_branchID
};

您可以使用
Linq

将序列的每个元素投影到
IEnumerable
。您不需要再次迭代并将其添加到单独的列表中

如果你的情况看起来像

if (myNewLoanMontlyList[0].Any())
{
    monthly_newloan_data_ID = myNewLoanMontlyList[0].SelectMany(c => c.id_data);
    monthly_newloan_data_debit = myNewLoanMontlyList[0].SelectMany(c => c.debit_data);
}
else
{
    monthly_newloan_data_ID.Add(0);
    monthly_newloan_data_debit.Add(0);
}

将序列中的每个元素投影到新形式中。在你的 案例新表单是
交易详情的实例

使用Linq
.Select()
,而不是for循环


为了得到最后一个元素,我使用了。您可以通过索引或条件获取单个元素。

您可以使用
Linq

List<jewelry_dashboard_view_per_month> transactionmonthlynewloan = dashboardmanager.Get_MonthlyTransaction(search_branch, (monthlyonly + "01"), "N-", (monthlyonly + no_of_items), no_of_items, monthlyonly);
myNewLoanMontlyList.Add(transactionmonthlynewloan);

List<jewelry_dashboard_view_per_month> transactionmonthlyrenewal = dashboardmanager.Get_MonthlyTransaction(search_branch, (monthlyonly + "01"), "R-", (monthlyonly + no_of_items), no_of_items, monthlyonly);
myRenewalMontlyList.Add(transactionmonthlyrenewal);
将序列的每个元素投影到
IEnumerable
。您不需要再次迭代并将其添加到单独的列表中

如果你的情况看起来像

if (myNewLoanMontlyList[0].Any())
{
    monthly_newloan_data_ID = myNewLoanMontlyList[0].SelectMany(c => c.id_data);
    monthly_newloan_data_debit = myNewLoanMontlyList[0].SelectMany(c => c.debit_data);
}
else
{
    monthly_newloan_data_ID.Add(0);
    monthly_newloan_data_debit.Add(0);
}

将序列中的每个元素投影到新形式中。在你的 案例新表单是
交易详情的实例

使用Linq
.Select()
,而不是for循环


为了得到最后一个元素,我使用了。您可以按索引或条件获取单个元素。

在您的
if else
条件场景中:

List<jewelry_dashboard_view_per_month> transactionmonthlynewloan = dashboardmanager.Get_MonthlyTransaction(search_branch, (monthlyonly + "01"), "N-", (monthlyonly + no_of_items), no_of_items, monthlyonly);
myNewLoanMontlyList.Add(transactionmonthlynewloan);

List<jewelry_dashboard_view_per_month> transactionmonthlyrenewal = dashboardmanager.Get_MonthlyTransaction(search_branch, (monthlyonly + "01"), "R-", (monthlyonly + no_of_items), no_of_items, monthlyonly);
myRenewalMontlyList.Add(transactionmonthlyrenewal);
if (myNewLoanMontlyList[0].Count != 0)
{
    foreach (var internal_monthly_newloan_data in myNewLoanMontlyList[0].SelectMany(c => c.id_data))
    {monthly_newloan_data_ID.Add(internal_monthly_newloan_data);}

    foreach (var internal_monthly_newloan_data in myNewLoanMontlyList[0].SelectMany(c => c.debit_data))
    {monthly_newloan_data_debit.Add(internal_monthly_newloan_data);}
}
else
{
    monthly_newloan_data_ID.Add(0);
    monthly_newloan_data_debit.Add(0);
};
如果在方法中,在
If-else
之后没有其他过程,则只能使用
If
条件,而不使用
else
部分

    if (myNewLoanMontlyList[0].Count == 0)
    {
       monthly_newloan_data_ID.Add(0);
       monthly_newloan_data_debit.Add(0);
    }

    foreach (var internal_monthly_newloan_data in myNewLoanMontlyList[0].SelectMany(c => c.id_data))
    {monthly_newloan_data_ID.Add(internal_monthly_newloan_data);}

    foreach (var internal_monthly_newloan_data in myNewLoanMontlyList[0].SelectMany(c => c.debit_data))
    {monthly_newloan_data_debit.Add(internal_monthly_newloan_data);}

if-else
条件的场景中:

if (myNewLoanMontlyList[0].Count != 0)
{
    foreach (var internal_monthly_newloan_data in myNewLoanMontlyList[0].SelectMany(c => c.id_data))
    {monthly_newloan_data_ID.Add(internal_monthly_newloan_data);}

    foreach (var internal_monthly_newloan_data in myNewLoanMontlyList[0].SelectMany(c => c.debit_data))
    {monthly_newloan_data_debit.Add(internal_monthly_newloan_data);}
}
else
{
    monthly_newloan_data_ID.Add(0);
    monthly_newloan_data_debit.Add(0);
};
如果在方法中,在
If-else
之后没有其他过程,则只能使用
If
条件,而不使用
else
部分

    if (myNewLoanMontlyList[0].Count == 0)
    {
       monthly_newloan_data_ID.Add(0);
       monthly_newloan_data_debit.Add(0);
    }

    foreach (var internal_monthly_newloan_data in myNewLoanMontlyList[0].SelectMany(c => c.id_data))
    {monthly_newloan_data_ID.Add(internal_monthly_newloan_data);}

    foreach (var internal_monthly_newloan_data in myNewLoanMontlyList[0].SelectMany(c => c.debit_data))
    {monthly_newloan_data_debit.Add(internal_monthly_newloan_data);}

@DamHarvey,它回答了您的问题吗?它有用吗?无法将System.Collection.List转换为事务\u详细信息。@DamHarvey,我们可以使用LastOrDefault获取单个事务\u详细信息对象。您也可以使用索引进行转换。我更新了我的答案。请check@DamHarvey,它是否回答了您的问题?是否有帮助?无法将System.Collection.List转换为事务详细信息。@DamHarvey,我们可以使用LastOrDefault获取单个事务详细信息对象。您也可以使用索引进行转换。我更新了我的答案。请检查还有一个漫长的过程。需要一个较短的。优化取决于逻辑和需求。如果必须提出一些条件,那么就必须实施这些条件。没有省略main
if-else
ok2x的解决方案。如果没有解决方案,我可能会坚持“如果没有”和“如果没有”,这仍然是一个漫长的过程。需要一个较短的。优化取决于逻辑和需求。如果必须提出一些条件,那么就必须实施这些条件。没有省略main
if-else
ok2x的解决方案。如果没有解决办法,我可能会坚持使用if-else和foreach