如何将IQueryable <system.guid>转换为字符串?</system.guid>

时间:2011-06-28 16:09:41

标签: c# linq

我有以下Linq查询,我需要将Guid结果作为字符串返回。下面实际上给了我对象的字符串表示,“IQueryable”。我如何将guid作为一个字符串?

谢谢!

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

6 个答案:

答案 0 :(得分:5)

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

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

现在,如果您的数据图层无法理解Single,则可以尝试

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

答案 1 :(得分:4)

顺序可以有多个Guid ...你想如何将它们连接在一起?例如,您可以使用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()等选项。

答案 2 :(得分:1)

IQueryable有很多结果。您可以使用.Single().ToString();确保只有一个结果,然后将其转换为string

答案 3 :(得分:0)

可查询表示Guid序列,但似乎您只想要一个。因此,请使用FirstSingle

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

首先,你的select语句返回一个Guid不是单个Guid的列表。如果你真的只想要一个,你应该调用以下方法之一: - First():如果你可能有几个,这将采用第一个,如果没有则抛出错误 - FirstOrDefault():如果你可能有几个或没有,这将采取第一个,或默认为空Guid如果没有 - Single():如果只有一个,这将采用那个,并且如果没有或多个将抛出异常 - SingleOrDefault():如果有零或一个,这将采用那个,或者如果没有则默认为空Guid,或者如果有几个则抛出异常。

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