我怎么能转换的IQueryable 字符串?(how can I convert IQuery

2019-06-26 00:48发布

我做一个SQL查询并返回一个字符串 - 服务名称。 这是查询:

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

我要如何串出来的查询?

Answer 1:

LINQ总是返回一个序列,所以你要取回物品出来。 如果你知道你将有只有一个结果,用Single()来获取该项目。

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

有四种LINQ方法来检索单个项目出的序列组成:

  • Single()返回的项目,如果有0或序列中的一个以上的项目抛出异常。
  • SingleOrDefault()返回的项目,或默认值( nullstring )。 抛出序列中,如果一个以上的项目。
  • First()返回的第一个项目。 如果有序列中0项抛出。
  • FirstOrDefault()如果没有项目返回的第一个项目,或默认值)


Answer 2:

为了得到第一个元素在您的查询,您可以使用query.First()但如果没有的元素,会抛出异常。 相反,你可以使用query.FirstOrDefault()这将给你要么第一个字符串,或默认值( null )。 因此,对于你的查询这会工作:

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


Answer 3:

你快到了。

做就是了

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);
}

或者使用query.FirstOrDefault()如前所述,你只会得到一个结果。



Answer 4:

我发现methods'way更漂亮,更清晰,所以这里有云:

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


Answer 5:

只是不喜欢这样;

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

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



文章来源: how can I convert IQueryable to string?