[英]How do I cast IQueryable<System.Guid> to a string?
我有以下 Linq 查詢,我需要將 Guid 結果作為字符串取回。 下面實際上給了我 object 的字符串表示,“IQueryable”。 如何將 guid 作為字符串獲取?
謝謝!
context.ApplicationId =
DataBaseEntities.Applications.Where(a => a.Name == applicationName)
.Select(a => a.Id).ToString();
我懷疑你實際上是想得到一個結果,所以你需要的是
context.ApplicationId = DataBaseEntities.Applications
.Single(a => a.Name == applicationName).Id.ToString();
現在,如果您的數據層不理解Single
,您可以嘗試
context.ApplicationId = DataBaseEntities.Applications
.First(a => a.Name == applicationName).Id.ToString();
那么序列中可以有多個Guids……你想如何將它們連接在一起? 例如,您可以只使用string.Join
(在 .NET 4 中;.NET 3.5 稍微復雜一些):
string guids = DataBaseEntities.Applications
.Where(a => a.Name == applicationName)
.Select(a => a.Id);
string guid = string.Join(',', guids);
或者,如果您知道只有一個匹配項,您可以使用Single
獲取一個值,然后找到 Id,然后調用ToString
:
string guid = DataBaseEntities.Applications
.Single(a => a.Name == applicationName)
.Id.ToString();
如果可能有多個匹配項,或者沒有,您需要考慮諸如FirstOrDefault()
類的選項。
IQueryable
有很多結果。 您可以使用.Single().ToString();
以確保只有一個結果,然后將其轉換為string
。
可查詢對象代表一系列Guid
,但您似乎只想要一個。 所以要么使用First
要么Single
:
context.ApplicationId = DataBaseEntities.Applications
.Where(a => a.Name == applicationName)
.Select(a => a.Id)
.First()
.ToString();
context.ApplicationId =
DataBaseEntities
.Applications
.Where(a => a.Name == applicationName)
.Select(a => a.Id).
.SingleOrDefault().
.ToString();
首先,您的 select 語句返回 Guid 的非單一 Guid 列表。 如果你真的只想要一個,你應該調用以下方法之一: - First():如果你可能有多個,這將采用第一個,如果沒有則拋出錯誤 - FirstOrDefault():如果你可能有幾個或沒有,這將采用第一個,或者如果沒有則默認為空 Guid - Single():如果正好有一個,這將采用那個,如果沒有則拋出異常或多個 - SingleOrDefault():如果有 0 或 1,這將采用那個,或者如果沒有,則默認為空 Guid,或者如果有多個則拋出異常。
context.ApplicationId =
DataBaseEntities.Applications.Where(a => a.Name == applicationName)
.Select(a => a.Id).Single().ToString();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.