如何将IQueryable <string>转换为字符串?

the*_*ter 13 .net c# linq iqueryable

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

IQueryable<string> query = from Comp in ServiceGroupdb.ServiceGroupes 
                           where (Comp.GroupID == groupID) 
                           select Comp.Name;
Run Code Online (Sandbox Code Playgroud)

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

And*_*bel 40

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

var item = (from Comp in ServiceGroupdb.ServiceGroupes 
            where (Comp.GroupID == groupID) 
            select Comp.Name).Single();
Run Code Online (Sandbox Code Playgroud)

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

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


Fil*_*erg 7

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

var myString = (from Comp in ServiceGroupdb.ServiceGroupes 
               where Comp.GroupID == groupID
               select Comp.Name)
               .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)


Dav*_*vio 6

你快到了.

做就是了

IQueryable<string> 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);
}
Run Code Online (Sandbox Code Playgroud)

或者query.FirstOrDefault()如上所述使用,因为您只能获得一个结果.