我不确定为什么以下不会为Vend返回值作为字符串。 当我检查鬻的价值,它说:System.Data.Objects.ObjectQuery``1[System.String]
Linq返回字符串
string vend = (from vnd in db.Vendors
where vnd.VendorID == id
select vnd.VendorName).ToString();
当我查看鬻的价值,这是不是我所期待
我不确定为什么以下不会为Vend返回值作为字符串。 当我检查鬻的价值,它说:System.Data.Objects.ObjectQuery``1[System.String]
Linq返回字符串
string vend = (from vnd in db.Vendors
where vnd.VendorID == id
select vnd.VendorName).ToString();
当我查看鬻的价值,这是不是我所期待
您购买的IQueryable<String>
回从您查询。你需要第一页或单或东西:
string vend = (from vnd in db.Vendors
where vnd.VendorID == id
select vnd.VendorName).First().ToString();
的ToString
是不需要如果VendorName
是一个字符串。
string vend = db.Vendors.Single(vnd => vnd.VendorID == id); // more terse
First将抓取集合中的第一条记录,如果集合为空则会抛出异常。
FirstOrDefault会返回第一条记录或预期类型的默认值,没有例外。
Single将返回该集合的第一条记录,但是如果集合中有多条记录或集合为空,则会抛出异常。
SingleOrDefault将返回该集合的第一条记录或该类型的默认值(如果为空),但如果该集合中有多条记录,则会抛出异常。
我总是忘记这一点。感谢您的简洁解释! – sparkyShorts
您在查询本身上调用ToString(),而不是查询的结果。尝试
string vend = (from vnd in db.Vendors
where vnd.VendorID == id
select vnd.VendorName).First();
这会得到查询的第一个结果,它应该已经是一个字符串(假定VendorName是一个字符串)。因此,不需要调用ToString()。
你在看vend的类型吗? – zmbq