【问题标题】:Non-static method requires a target error when counting [duplicate]计数时非静态方法需要目标错误[重复]
【发布时间】:2015-06-25 10:15:15
【问题描述】:

我的代码:

public IQueryable<Model.Movie> SearchMovies(string sgenre,string syear,string stitle)
        {
            using (var db = new Context())
            {
                var genre = db.Genre.FirstOrDefault(x => x.Name == sgenre);

                var movies = db.Movie.Where(x => x.Genre.Any(y => y.ID == genre.ID));


                List<Movie> empty = new List<Movie>();

                if (movies.ToList().Count() > 0)
                {
                    return movies.ToList().AsQueryable();
                }
                else
                {
                    return empty.ToList().AsQueryable();
                }
            }
        }

当指定类型的电影不存在时出现错误:

System.Reflection.TargetException:非静态方法需要一个 目标。

错误行:

if (movies.ToList().Count() > 0)

但如果存在具有指定类型的电影脚本有效。

【问题讨论】:

    标签: c# entity-framework non-static


    【解决方案1】:

    此异常意味着您在 LINQ 查询中使用的某些变量为空。

    例如:

    当 x.Gendre 为 null 时,将导致此异常:

    var movies = db.Movie.Where(x => x.Genre.Any(y => y.ID == genre.ID));
    

    试试改成:

    db.Movie.Where(x => x.Gendre != null&&x.Genre.Any(y => y.ID == genre.ID));
    

    【讨论】:

    • 所以我必须使用try catch?
    • @Enteee 不只是一个空检查而不是一个计数>0
    • 我会检查电影/流派是否等于 null 而不是依赖异常
    • 如果我给(电影!= null)它也会给我错误。
    • db.Movie.Where(x => x.Gendre != null&&x.Genre.Any(y => y.ID == Genre.ID));
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多