我有一些执行查询的代码。
int credenciadaId = 10;
var nome = from c in db.SanCredenciadas
where c.CredenciadaId == credenciadaId
select c.Name;
我的问题分为两部分。
我希望查询只返回一个Name
作为string
。如何更改查询nome
,以便以下代码有效?
string name = nome;
此外,我如何编写改进的查询,以便它使用lambda表达式和method syntax而不是当前的查询语法?
答案 0 :(得分:6)
string name = nome.Single().Name;
如果你没有得到一个我怀疑你想要的结果,这将失败。
使用lambda的查询将是
var credenciadaId = 10;
var name = db.San_Credenciadas
.Single(c => c.Credenciada_Id == credenciadaId).Name;
答案 1 :(得分:2)
var name = db.San_Credenciadas.First(c => c.Credenciada_Id == Credenciada_Id).Name
答案 2 :(得分:1)
值得注意的是,如果您要使用collection.Single()
或collection.Single(x => x.Onething == someValue)
,您的收藏必须有一个与之匹配的项目,否则它会抛出异常。
至于collection.First()
,您只是想确保collection
实际上有一些数据,因此您可以使用if (collection.Any())
通常,我会选择使用collection.SingleOrDefault()
或collection.FirstOrDefault()
,然后检查从中返回的值是否为空。如果没有,那么你可以得到这个名字。如果 为null,则可以根据需要处理错误。