ASP.NET实体框架无法隐式转换类型

时间:2016-09-23 17:56:12

标签: c# asp.net

我得到了一行代码:

ProjectClass pricing = db.Data.Where(model => model.collection == “aaa”);

但是我收到了这个错误:

Cannot implicitly convert type 'System.Linq.IQueryable<ProjectName.Models.ProjectClass>' to 'ProjectName.Models.ProjectClass'. An explicit conversion exists (are you missing a cast?)

我做错了什么?

这是我的ProjectClass

public class ProjectClass
    {
        [Key]
        public int id { get; set; }
        [DisplayName("Design")]
        public string name { get; set; }
        [DisplayName("Price")]
        [DisplayFormat(DataFormatString = "{0:n0}")]
        public int basePrice { get; set; }
        [DisplayName("Size")]
        public int sqft { get; set; }
        [DisplayName("Collection")]
        public string collection { get; set; }
        [DisplayName("Hidden")]
        public bool hidden { get; set; }
    }

4 个答案:

答案 0 :(得分:2)

查询包含任意数量结果的结果{% extends "shop/base.html" %} {% block content %} <form method="post"> {% csrf_token %} {{ form }} <div class="form-actions"> <button type="submit">Send</button> </div> </form> {% endblock %}

Where

仅使用 List<ProjectClass> result = db.Data.Where(model => model.collection == “aaa”).ToList();

查询0或1结果
SingleOrDefault

如果没有匹配的记录,结果将为 var result = db.data.SingleOrDefault(model => model.collection == "aaa");

要查询第一个匹配的记录,请使用null

FirstOrDefault

如果没有匹配的记录,结果将为var result = db.data.FirstOrDefault(model => model.collection == "aaa");

答案 1 :(得分:1)

仅选择一项:

ProjectClass pricing = db.Data.Where(model => model.collection == “aaa”).FirstOrDefault();

答案 2 :(得分:1)

ProjectClass pricing = db.Data.FirstOrDefault(model => model.collection == "aaa");

目前您正在选择一个列表。以上将获得第一项。如果你只想要一个,你可以改为使用SingleOrDefault。

如果你想要一个集合(列表),那么使用ToList或ToArray实现结果(还有更多,但这些是常见的)。

List<ProjectClass> pricing = db.Data.Where(model => model.collection == "aaa").ToList();

答案 3 :(得分:0)

ProjectClass pricing = db.Data.Where(model => model.collection == “aaa”);

上面的代码是错误的,因为Where()将根据谓词返回过滤后的序列。所以,结果是很多不是单一的元素!即使Where()中的条件适用于SINGLE元素,结果也不会是单个元素。

抛出异常,因为定价变量被声明为单个ProjectClass。

如果您不确定您期望的结果类型,可以使用:

var pricing = db.Data.Where(model => model.collection == “aaa”);