簡體   English   中英

我如何投射 IQueryable<system.guid> 到一個字符串?</system.guid>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM