0

匿名型オブジェクトを返すオブジェクトとして変数を宣言しようとしています。(タイプ Anonymous1 を Anonymous2 に暗黙的に変換することはできません。

var queryResult = new object();

            if (check == 1)
            {
                queryResult = context.SubjectContext
                    .Where(x => x.CreatedBy == CreatedBy)
                    .Select(x => new { x.Id, x.Name });
            }
            else (check == 2)
            {
                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" };
            }
4

2 に答える 2

1

同じコンテキスト (この場合は「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" };
        }

この大量のコードを回避する方法を考えることができると思いますが、今のところはうまくいきます。ビクター。

于 2014-01-23T12:25:31.763 に答える