我做一个SQL查询并返回一个字符串 - 服务名称。 这是查询:
IQueryable<string> query = from Comp in ServiceGroupdb.ServiceGroupes
where (Comp.GroupID == groupID)
select Comp.Name;
我要如何串出来的查询?
我做一个SQL查询并返回一个字符串 - 服务名称。 这是查询:
IQueryable<string> 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或序列中的一个以上的项目抛出异常。 SingleOrDefault()
返回的项目,或默认值( null
的string
)。 抛出序列中,如果一个以上的项目。 First()
返回的第一个项目。 如果有序列中0项抛出。 FirstOrDefault()
如果没有项目返回的第一个项目,或默认值) 为了得到第一个元素在您的查询,您可以使用query.First()
但如果没有的元素,会抛出异常。 相反,你可以使用query.FirstOrDefault()
这将给你要么第一个字符串,或默认值( null
)。 因此,对于你的查询这会工作:
var myString = (from Comp in ServiceGroupdb.ServiceGroupes
where Comp.GroupID == groupID
select Comp.Name)
.FirstOrDefault();
你快到了。
做就是了
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()
如前所述,你只会得到一个结果。
我发现methods'way更漂亮,更清晰,所以这里有云:
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;
然后查询将包含你的结果。