我有以下Linq查询,我需要将Guid结果作为字符串返回。下面实际上给了我对象的字符串表示,“IQueryable”。我如何将guid作为一个字符串?
谢谢!
context.ApplicationId =
DataBaseEntities.Applications.Where(a => a.Name == applicationName)
.Select(a => a.Id).ToString();
答案 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
的序列,但似乎您只想要一个。因此,请使用First
或Single
:
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();