我得到了一行代码:
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; }
}
答案 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();
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”);