如何将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()
返回项或默认值(string
为null
)。 如果序列中有多个项目,则抛出。 -
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;
然后查询将包含您的结果。