如何使用.NET Core中的EF Core在foreach循环中执行存储过程?

时间:2019-03-01 11:33:44

标签: stored-procedures entity-framework-core

我正在尝试在foreach循环中执行存储过程,如下所示:

foreach (var p in results)
{
    string InputOne = year.ToString();
    char c = '0';
    string InputTwo = month.ToString().PadLeft(2, c); 

    List<Entity> data = new List<Entity>();

    SqlParameter Param1 = new SqlParameter("@Param1", "Month");
    SqlParameter Param2 = new SqlParameter("@Param2", p.Id);
    SqlParameter Param3 = new SqlParameter("@Param3", InputOne);
    SqlParameter Param4 = new SqlParameter("@Param4", InputTwo);

    string usp = "Schema.usp_spname @Param1, @Param2, @Param3, @Param4";
    data = _dbContext._sp_GetEmployeeAttendanceData.FromSql(usp, Param1, Param2, Param3, Param4).ToList();
}

我在所有条件下都获得相同的数据,而我的数据库包含不同的数据。

请帮助我解决这个问题!

1 个答案:

答案 0 :(得分:0)

循环的最后一行

  

数据=

会在每次迭代中替换数据变量,因此您只会得到该 For循环中的最后一个迭代。您需要对其进行更改,以使(data =)部分追加到列表。如果数据是列表,则可以使用data.AddRange()

这行List<Entity> data = new List<Entity>();需要移到循环之外