同じコンテキスト (この場合は「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" };
}
この大量のコードを回避する方法を考えることができると思いますが、今のところはうまくいきます。ビクター。