尽管您从相同的上下文中进行选择,在本例中为“SubjectContext”,但您正在创建一个新类型,执行此操作时:
.Select(x => new { x.Id, x.Name });
还有这个;
.Select(x => new { x.Id, x.Name, x.Skillset });
因此,在这种情况下,您必须返回一个隐式类型变量,称为“var”。像这样的东西:
var queryResult = context.SubjectContext
.Where(x => x.CreatedBy == CreatedBy)
.Select(x => new { x.Id, x.Name });
当然,在这种情况下 - 您在括号之间使用它 - 您必须在返回之前更改“queryResult”的声明并控制结果。像这样的东西:
if (check == 1)
{
var queryResult = context.SubjectContext
.Where(x => x.CreatedBy == CreatedBy)
.Select(x => new { x.Id, x.Name });
if (queryResult.Any())
{
return jsonRetrunMsg = new JsonReturn { Status = "success", Message = queryResult };
}
else
{
return jsonErrorMsg = new JsonError { Status = "error", Message = "Check User Id" };
}
} else if (check == 0)
{
var queryResult = context.SubjectContext
.Where(x => x.CreatedBy == CreatedBy)
.Select(x => new { x.Id, x.Name, x.Skillset });
if (queryResult.Any())
{
return jsonRetrunMsg = new JsonReturn { Status = "success", Message = queryResult };
}
else
{
return jsonErrorMsg = new JsonError { Status = "error", Message = "Check User Id" };
}
}
在这种情况下,var queryResult 将假定您的 Linq 查询中返回/创建的类型的类型,并且不会发生错误。
好吧,阅读评论,我为您找到了另一个解决方案,我想它会起作用,试一试。
using System.Collections;
object queryResult;
if (check == 1)
{
queryResult = context.SubjectContext
.Where(x => x.CreatedBy == CreatedBy)
.Select(x => new { x.Id, x.Name });
} else if (check == 0)
{
queryResult = context.SubjectContext
.Where(x => x.CreatedBy == CreatedBy)
.Select(x => new { x.Id, x.Name, x.Skillset });
}
if ((queryResult != null) && ((queryResult as ICollection).Count > 0))
{
return jsonRetrunMsg = new JsonReturn { Status = "success", Message = queryResult };
}
else
{
return jsonErrorMsg = new JsonError { Status = "error", Message = "Check User Id" };
}
猜猜你可以想办法避免这么多代码,但是,它现在可以工作。胜利者。