我做了一個sql查詢,它返回一個字符串 - 服務名稱。這是查詢:如何將IQueryable <string>轉換爲字符串?
IQueryable<string> query = from Comp in ServiceGroupdb.ServiceGroupes
where (Comp.GroupID == groupID)
select Comp.Name;
如何從查詢中獲取字符串?
我做了一個sql查詢,它返回一個字符串 - 服務名稱。這是查詢:如何將IQueryable <string>轉換爲字符串?
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()
返回的第一個項目,或默認值,如果沒有項目)可以確認它在我的解決方案中有效。謝謝! – JPK
到查詢得到的第一個元素,你可以使用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;
查詢將包含您的結果。
這不是答案,不同的風格只是相同的代碼 –
他不需要使用任何不同的風格。他的查詢會產生一個字符串,這個變量將存儲該變量。如果你能仔細閱讀他所說的話。 「返回一個字符串 - 服務名稱」。所以他不需要任何foreach循環,因爲它只有一個值。 –
where子句返回IQueryable ...與OP代碼的唯一區別是var的用法 – Alex
如果您只希望得到一個響應,您爲什麼要將響應聲明爲IQueryable?多個字符串會被視爲錯誤?如果您期待多個響應,然後轉換爲數組,否則請在您的查詢中明確並將其更改爲返回單個字符串。 –
Lazarus
我希望得到一個字符串作爲結果 – thechmodmaster
但當我這樣做:字符串名稱=從Comp在ServiceGroupdb.ServiceGroupes其中(Comp.GroupID == groupID)選擇Comp.Name; – thechmodmaster