如何将IQueryable 转换为字符串?

我做一个sql查询,它返回一个字符串 – 服务名称。 这是查询:

IQueryable query = from Comp in ServiceGroupdb.ServiceGroupes where (Comp.GroupID == groupID) select Comp.Name; 

如何从查询中获取字符串?

LINQ始终返回一个序列,因此您必须从中检索项目。 如果您知道只有一个结果,请使用Single()来检索该项目。

 var item = (from Comp in ServiceGroupdb.ServiceGroupes where (Comp.GroupID == groupID) select Comp.Name).Single(); 

有四种LINQ方法可以从序列中检索单个项目:

  • Single()返回该项,如果序列中有0个或多个项,则抛出exception。
  • SingleOrDefault()返回项或默认值( stringnull )。 如果序列中有多个项目,则抛出。
  • First()返回第一个项目。 如果序列中有0个项目则抛出。
  • FirstOrDefault()返回第一个项目,如果没有项目,则返回默认值)

要获取查询中的第一个元素,可以使用query.First()但如果没有元素,则会引发exception。 相反,您可以使用query.FirstOrDefault() ,它将为您提供第一个字符串或默认值( null )。 所以对于你的查询,这将工作:

 var myString = (from Comp in ServiceGroupdb.ServiceGroupes where Comp.GroupID == groupID select Comp.Name) .FirstOrDefault(); 

你快到了。

做就是了

 IQueryable query = from Comp in ServiceGroupdb.ServiceGroupes where (Comp.GroupID == groupID) select Comp.Name; // Loop over all the returned strings foreach(var s in query) { Console.WriteLine(s); } 

或者使用query.FirstOrDefault() ,因为你只会得到一个结果。

我发现这些方法更漂亮,更清晰,所以这里有:

 string query = ServiceGroupdb.ServiceGroupes .Where(Comp => Comp.GroupID == groupID) .Select(Comp => Comp.Name) .FirstOrDefault(); 

就这样做;

 var query = from Comp in ServiceGroupdb.ServiceGroupes where (Comp.GroupID == groupID) select Comp.Name; 

然后查询将包含您的结果。