0

ページのコントローラーの Index メソッドで使用する必要がある Linq クエリがありますが、コードの "select new" 部分で次のエラーが発生します。

エラー

Cannot implicitly convert type 'System.Linq.IQueryable<AnonymousType#1>' to 'string'

アクション方法

    public ActionResult Index(string query)
    {

        var agentProductTraining = "";

        if (String.IsNullOrEmpty(query))
        {
            BlankIndex();
        }
        else
        {
            agentProductTraining = from course in db.Course
                                   where
                                       course.CourseDescription.Contains(query)
                                   select new
                                   {
                                       course.CourseCode,
                                       course.CourseDescription,
                                       course.Partner,
                                       course.Status,
                                       course.LastChangeDate,
                                       course.LastChangeOperator
                                   };
        }

        return View(agentProductTraining.ToList());
    }
4

2 に答える 2

4

IQueryable<T>エラーが明確に述べているように、LINQ クエリの結果 ( ) を型の変数に代入することはできませんstring

その行で変数を宣言する必要があります。

var agentProductTraining = select ...
于 2012-12-17T19:58:30.350 に答える
1

変数を文字列として初期化したため、コンパイラは変数をstring型にしますが (varキーワードを使用したため)、匿名型のコレクションを変数に割り当てようとしました。

object代わりにまたはとして宣言できますvar

object agentProductTraining;  // can safely be overwritten

また、私はあなたが意味すると思います:

return BlankIndex();

ifブロックで。そうでなければ、それはに落ちます

return View(agentProductTraining.ToList());

どこagentProductTrainingに行きますかnull

もちろんreturn BlankIndexifブロックで使用すると、全体を単純化できます。

if (String.IsNullOrEmpty(query))
{
    return BlankIndex();
}

// don't need an `else` here since the if will return to the caller
var agentProductTraining = from course in db.Course
                           where
                               course.CourseDescription.Contains(query)
                           select new
                           {
                               course.CourseCode,
                               course.CourseDescription,
                               course.Partner,
                               course.Status,
                               course.LastChangeDate,
                               course.LastChangeOperator
                           };

return View(agentProductTraining.ToList());
于 2012-12-17T20:05:08.337 に答える