0

我有一个 Linq 查询,需要在页面控制器的 Index 方法中使用,但是在代码的“选择新”部分出现以下错误:

错误

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

正如错误明确指出的那样,您不能将 LINQ 查询 ( IQueryable<T>) 的结果分配给类型为 的变量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 回答