我不确定为什么以下内容不会将Vend的值作为字符串返回。
当我检查vend的值时,它说:System.Data.Objects.ObjectQuery``1[System.String]
string vend = (from vnd in db.Vendors
where vnd.VendorID == id
select vnd.VendorName).ToString();
当我查看vend的价值时,这不是我的预期
答案 0 :(得分:33)
您从查询中收到IQueryable<String>
。你需要First或Single或者其他东西:
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将返回集合的第一条记录或类型的默认值(如果为空),但如果集合中有多条记录,则会抛出异常。
答案 1 :(得分:7)
您在查询本身上调用ToString(),而不是查询结果。尝试
string vend = (from vnd in db.Vendors
where vnd.VendorID == id
select vnd.VendorName).First();
这将获得查询的第一个结果,该结果应该已经是一个字符串(假设VendorName是一个字符串)。因此,无需调用ToString()。