Linq要返回字符串

Nat*_*Pet 15 c# linq string

我不确定为什么以下内容不会将Vend的值作为字符串返回.当我检查vend的值时,它说:System.Data.Objects.ObjectQuery``1[System.String]

     string vend = (from vnd in db.Vendors
             where vnd.VendorID == id
             select vnd.VendorName).ToString();
Run Code Online (Sandbox Code Playgroud)

当我查看vend的价值时,这不是我的预期

Joe*_*Joe 35

你得到了一个IQueryable<String>回复查询.你需要First或Single或者其他东西:

string vend = (from vnd in db.Vendors
         where vnd.VendorID == id
         select vnd.VendorName).First().ToString();
Run Code Online (Sandbox Code Playgroud)

ToString如果VendorName是String ,则不需要.

string vend = db.Vendors.Single(vnd => vnd.VendorID == id); // more terse 
Run Code Online (Sandbox Code Playgroud)

首先将从集合中获取第一条记录,如果集合为空,则会抛出异常.

FirstOrDefault将返回第一条记录或预期类型的​​默认值,无异常.

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

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


小智 7

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

string vend = (from vnd in db.Vendors
where vnd.VendorID == id
select vnd.VendorName).First();
Run Code Online (Sandbox Code Playgroud)

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