C# 当前上下文、ApiController、asp.net core和IEnumerable中不存在该名称

C# 当前上下文、ApiController、asp.net core和IEnumerable中不存在该名称,c#,asp.net-core,asp.net-core-webapi,C#,Asp.net Core,Asp.net Core Webapi,我正在创建一个返回列表IEnumerable的服务,问题是当返回元素IEnumerable时会出现以下错误:“ActivitiesList”名称在当前上下文中不存在 我与你分享我的代码,错误出现在最后一行:返回活动列表 [HttpPost] [路由(“用户/获取用户活动”)] 公共IEnumerable GetUserActivities() { 字符串email=User.FindFirstValue(ClaimTypes.email); 尝试 { 如果(!String.IsNullOrEmp

我正在创建一个返回列表IEnumerable的服务,问题是当返回元素IEnumerable时会出现以下错误:“ActivitiesList”名称在当前上下文中不存在 我与你分享我的代码,错误出现在最后一行:返回活动列表

[HttpPost]
[路由(“用户/获取用户活动”)]
公共IEnumerable GetUserActivities()
{
字符串email=User.FindFirstValue(ClaimTypes.email);
尝试
{
如果(!String.IsNullOrEmpty(电子邮件))
{
使用(SecondAppContext db=new SecondAppContext())
{
使用(var transaccion=new TransactionScope())
{
User UserModel=db.User
.其中(b=>b.电子邮件==电子邮件)
.First();
var IdUser=UserModel.Id;
IEnumerable活动列表=
(
来自db.Activities中的活动
其中activity.IdUser==IdUser&&
activity.DateCreated>DateTime.Now.AddDays(-3)
选择新活动类
{
dataCreated=activity.DateCreated,
描述=活动。描述,
类别=活动。类别,
性别=活动。性别,
ageMin=(int)activity.ageMin,
ageMax=(int)activity.ageMax
}).ToList();
完全横渡;
}
}
}
}
捕获(例外情况除外)
{
错误(例如ToString());
}
返回活动列表;
}
  • 你需要注意范围
  • 你需要考虑返回一个错误代码,如果事情不是预期的那样
  • 您应该使用异步和等待模式
  • 这里不需要交易
  • 您还应该使用标准的大小写和命名约定,例如
    User-userModel
  • 未经测试的示例

    public async Task<IEnumerable<ActivitiesClass>> GetUserActivities()
    {
       string email = User.FindFirstValue(ClaimTypes.Email);
    
       if (string.IsNullOrEmpty(email))
          return null; // you should think about this
    
       try
       {
          await using var db = new SecondAppContext();
    
          // what are yu going to if the user is not found?
          var userModel = await db.User
             .Where(b => b.Email == email)
             .FirstOrDefaultAsync();
    
          if (userModel == null)
             return null; // you should think about this
    
          return await (
             from activity in db.Activities
             where activity.IdUser == userModel.Id && activity.DateCreated > DateTime.Now.AddDays(-3)
             select new ActivitiesClass
             {
                dataCreated = activity.DateCreated,
                description = activity.Description,
                category = activity.Category,
                gender = activity.Gender,
                ageMin = (int) activity.AgeMin,
                ageMax = (int) activity.AgeMax
             }).ToListAsync();
    
       }
       catch (Exception ex)
       {
          Error(ex.ToString());
       }
    
       return null; // you should think about this
    }
    
    公共异步任务GetUserActivities() { 字符串email=User.FindFirstValue(ClaimTypes.email); if(string.IsNullOrEmpty(电子邮件)) return null;//您应该考虑一下 尝试 { 使用var db=new SecondAppContext()等待; //如果找不到用户,你打算怎么办? var userModel=await db.User .其中(b=>b.电子邮件==电子邮件) .FirstOrDefaultAsync(); if(userModel==null) return null;//您应该考虑一下 返回等待( 来自db.Activities中的活动 其中activity.IdUser==userModel.Id&&activity.DateCreated>DateTime.Now.AddDays(-3) 选择新活动类 { dataCreated=activity.DateCreated, 描述=活动。描述, 类别=活动。类别, 性别=活动。性别, ageMin=(int)activity.ageMin, ageMax=(int)activity.ageMax }).ToListAsync(); } 捕获(例外情况除外) { 错误(例如ToString()); } return null;//您应该考虑一下 } 当前上下文中不存在名称“ActivitiesList”

    该问题涉及到您正在
    if
    语句中定义
    ActivitiesList
    ,因此它将显示上述错误。此外,由于
    IEnumerable
    是一个接口,我建议您可以定义一个
    List
    实例来存储返回数据

    请尝试按以下方式修改您的代码:

        [HttpPost]
        [Route("user/get-user-activities")]
        public IEnumerable<ActivitiesClass> GetUserActivities()
        {
            string email = User.FindFirstValue(ClaimTypes.Email);
    
            //define a List<ActivitiesClass> to store the return data.
            List<ActivitiesClass> ActivitiesList = new List<ActivitiesClass>();
    
            try
            {
                if (!String.IsNullOrEmpty(email))
                {
                    using (SecondAppContext db = new SecondAppContext())
                    {
                        using (var transaccion = new TransactionScope())
                        {
                            User UserModel = db.User
                                       .Where(b => b.Email == email)
                                       .First();
                            var IdUser = UserModel.Id;
    
                            //set values for the ActivitiesList 
                            ActivitiesList =
                            (
                                from activity in db.Activities
                                where activity.IdUser == IdUser &&
                                activity.DateCreated > DateTime.Now.AddDays(-3)
                                select new ActivitiesClass
                                {
                                    dataCreated = activity.DateCreated,
                                    description = activity.Description,
                                    category = activity.Category,
                                    gender = activity.Gender,
                                    ageMin = (int)activity.AgeMin,
                                    ageMax = (int)activity.AgeMax
                                }).ToList();
                            transaccion.Complete();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Error(ex.ToString());
            }
            return ActivitiesList; //Call the `.AsEnumerable()` method, if you want to convert the List to the IEnumerable<>.
        }
    
    [HttpPost]
    [路由(“用户/获取用户活动”)]
    公共IEnumerable GetUserActivities()
    {
    字符串email=User.FindFirstValue(ClaimTypes.email);
    //定义一个列表来存储返回数据。
    列表活动列表=新列表();
    尝试
    {
    如果(!String.IsNullOrEmpty(电子邮件))
    {
    使用(SecondAppContext db=new SecondAppContext())
    {
    使用(var transaccion=new TransactionScope())
    {
    User UserModel=db.User
    .其中(b=>b.电子邮件==电子邮件)
    .First();
    var IdUser=UserModel.Id;
    //设置活动列表的值
    活动列表=
    (
    来自db.Activities中的活动
    其中activity.IdUser==IdUser&&
    activity.DateCreated>DateTime.Now.AddDays(-3)
    选择新活动类
    {
    dataCreated=activity.DateCreated,
    描述=活动。描述,
    类别=活动。类别,
    性别=活动。性别,
    ageMin=(int)activity.ageMin,
    ageMax=(int)activity.ageMax
    }).ToList();
    完全横渡;
    }
    }
    }
    }
    捕获(例外情况除外)
    {
    错误(例如ToString());
    }
    return ActivitiesList;//如果要将列表转换为IEnumerable,请调用“.AsEnumerable()”方法。
    }
    
    Af
        [HttpPost]
        [Route("user/get-user-activities")]
        public IEnumerable<ActivitiesClass> GetUserActivities()
        {
            string email = User.FindFirstValue(ClaimTypes.Email);
    
            //define a List<ActivitiesClass> to store the return data.
            List<ActivitiesClass> ActivitiesList = new List<ActivitiesClass>();
    
            try
            {
                if (!String.IsNullOrEmpty(email))
                {
                    using (SecondAppContext db = new SecondAppContext())
                    {
                        using (var transaccion = new TransactionScope())
                        {
                            User UserModel = db.User
                                       .Where(b => b.Email == email)
                                       .First();
                            var IdUser = UserModel.Id;
    
                            //set values for the ActivitiesList 
                            ActivitiesList =
                            (
                                from activity in db.Activities
                                where activity.IdUser == IdUser &&
                                activity.DateCreated > DateTime.Now.AddDays(-3)
                                select new ActivitiesClass
                                {
                                    dataCreated = activity.DateCreated,
                                    description = activity.Description,
                                    category = activity.Category,
                                    gender = activity.Gender,
                                    ageMin = (int)activity.AgeMin,
                                    ageMax = (int)activity.AgeMax
                                }).ToList();
                            transaccion.Complete();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Error(ex.ToString());
            }
            return ActivitiesList; //Call the `.AsEnumerable()` method, if you want to convert the List to the IEnumerable<>.
        }