Linq返回字符串

本文关键字:字符串 返回 Linq | 更新日期: 2023-09-27 18:15:31

我不知道为什么下面没有返回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的值时,它不是我所期望的

Linq返回字符串

您将从查询中获得IQueryable<String>。您需要First或Single或其他内容:

string vend = (from vnd in db.Vendors
         where vnd.VendorID == id
         select vnd.VendorName).First().ToString();

如果VendorName是字符串,则不需要ToString

string vend = db.Vendors.Single(vnd => vnd.VendorID == id); // more terse 

First将从集合中获取第一条记录,如果集合为空则抛出异常。

FirstOrDefault将返回第一条记录或期望类型的默认值,没有例外。

Single将返回集合的第一条记录,但如果集合中有多条记录或集合为空,则抛出异常。

SingleOrDefault将返回集合的第一条记录,如果为空则返回该类型的默认值,但如果集合中有多条记录则抛出异常。

您是在查询本身上调用ToString(),而不是在查询结果上。试着

string vend = (from vnd in db.Vendors
where vnd.VendorID == id
select vnd.VendorName).First();

获取查询的第一个结果,该结果应该已经是一个字符串(假设VendorName是一个字符串)。因此,无需调用ToString()。