C# 如何将IQueryable强制转换为字符串?

C# 如何将IQueryable强制转换为字符串?,c#,linq,C#,Linq,我有以下Linq查询,需要将Guid结果作为字符串返回。下面给出了对象的字符串表示形式,IQueryable。如何将guid获取为字符串 谢谢 context.ApplicationId = DataBaseEntities.Applications.Where(a => a.Name == applicationName) .Select(a => a.Id).ToStri

我有以下Linq查询,需要将Guid结果作为字符串返回。下面给出了对象的字符串表示形式,IQueryable。如何将guid获取为字符串

谢谢

  context.ApplicationId =
            DataBaseEntities.Applications.Where(a => a.Name == applicationName)
                                         .Select(a => a.Id).ToString();

queryable表示一个Guid序列,但似乎您只需要一个。因此,使用第一个或单个:


我怀疑你实际上是想得到一个结果,所以你需要的是

context.ApplicationId = DataBaseEntities.Applications
    .Single(a => a.Name == applicationName).Id.ToString();
现在,如果您的数据层不理解单个,您可以尝试

context.ApplicationId = DataBaseEntities.Applications
    .First(a => a.Name == applicationName).Id.ToString();

一个IQueryable有很多结果。您可以使用.Single.ToString;要确保只有一个结果,请将其转换为字符串。

那么序列中可以有多个GUID。。。您想如何将它们连接在一起?例如,您可以只在.NET 4;中使用string.Join。NET 3.5稍微复杂一些:

string guids = DataBaseEntities.Applications
                               .Where(a => a.Name == applicationName)
                               .Select(a => a.Id);
string guid = string.Join(',', guids);
或者,如果您知道只有一个匹配项,则可以使用Single获取一个值,然后查找Id,然后调用ToString:


如果可能有多个匹配项,或者没有匹配项,则需要考虑像FirstOrDefault这样的选项。

首先,select语句返回的是Guid的列表,而不是单个Guid。如果确实只需要一个,则应调用以下方法之一: -第一:如果您可能有几个,这将取第一个,如果没有,则抛出一个错误 -FirstOrDefault:如果您可能有多个或没有,这将采用第一个,如果没有,则默认为空Guid -Single:如果正好有一个,则将采用该异常,如果没有异常或多个异常,则将抛出异常 -SingleOrDefault:如果有零个或一个,则取该Guid;如果没有,则默认为空Guid;如果有多个,则抛出异常

context.ApplicationId = 
DataBaseEntities.Applications.Where(a => a.Name == applicationName)
.Select(a => a.Id).Single().ToString(); 
string guids = DataBaseEntities.Applications
                               .Where(a => a.Name == applicationName)
                               .Select(a => a.Id);
string guid = string.Join(',', guids);
string guid = DataBaseEntities.Applications
                              .Single(a => a.Name == applicationName)
                              .Id.ToString();
context.ApplicationId = 
DataBaseEntities.Applications.Where(a => a.Name == applicationName)
.Select(a => a.Id).Single().ToString();