我的变量“这里不为空”使用实体框架 7

问题描述 投票:0回答:1

我正在尝试在我的数据库上设置一个 LINQ 控制器。我几乎可以肯定我真的很接近,但这最终让我感到困惑:

[Route("tables/skillsresults/GetSoftSkillsAndSubCatsFromUser/{userId}")]
public List<JoinedResultsWithCategories> GetSoftSkillsAndSubCatsFromUser(string userId)
{
    var res = new List<JoinedResultsWithCategories>();
    var query = from ss in _migrationDbContext.Set<SkillResultsItem>().Where(y => y.BelongsToUserId == userId)
                join sc in _migrationDbContext.Set<SubCategoriesItem>()
                on ss.BelongsToSkillId equals sc.Id
                select new { ss, sc };

    if (query == null)
        return new List<JoinedResultsWithCategories>();

    res = query.ToList<JoinedResultsWithCategories>();

    res.Select(x => new JoinedResultsWithCategories()
    {
        BelongsToUserId = x.BelongsToUserId,
        BelongsToCategoryId = x.BelongsToCategoryId,
        BelongsToSkillId = x.BelongsToSkillId,
        IsSkill = x.IsSkill,
        ValueEng = x.ValueEng,
        ValueGer = x.ValueGer
    }).ToList<JoinedResultsWithCategories>();

    return res;
}

这不起作用,因为:

'query' 在这里不为空。在“query.toList”上。

“IQueryable<>”不包含“ToList”的定义,最佳扩展方法重载“Enumerable.ToList(IEnumerable)”需要类型为“System.Collections.Generic.IEnumerable”的接收器

我该如何解决这个问题?该控制器连接到远程数据库。

c# entity-framework
1个回答
0
投票

您的 LINQ 查询返回带有

SkillResultsItem
SubCategoriesItem
的匿名类型。

select new { ss, sc };

所以你不能只是将它转换为

List<JoinedResultsWithCategories>
要修复它,你需要修改你的查询以选择你需要的
SkillResultsItem
SubCategoriesItem
的属性,然后使用这些创建一个新的
JoinedResultsWithCategories
实例特性。我不知道你在这种类型中有哪些属性,但这里有一个代码示例

[Route("tables/skillsresults/GetSoftSkillsAndSubCatsFromUser/{userId}")]
public List<JoinedResultsWithCategories> GetSoftSkillsAndSubCatsFromUser(string userId)
{
    var query = from ss in _migrationDbContext.Set<SkillResultsItem>().Where(y => y.BelongsToUserId == userId)
            join sc in _migrationDbContext.Set<SubCategoriesItem>()
            on ss.BelongsToSkillId equals sc.Id
            select new JoinedResultsWithCategories
            {
                BelongsToUserId = ss.BelongsToUserId,
                BelongsToCategoryId = sc.BelongsToCategoryId,
                BelongsToSkillId = ss.BelongsToSkillId,
                IsSkill = ss.IsSkill,
                ValueEng = ss.ValueEng,
                ValueGer = ss.ValueGer
            };

    return query.ToList<JoinedResultsWithCategories>();
}
© www.soinside.com 2019 - 2024. All rights reserved.