1

我有一些执行查询的代码。

int credenciadaId = 10;
var nome = from c in db.SanCredenciadas
           where c.CredenciadaId == credenciadaId
           select c.Name;

我的问题分为两部分。

我希望查询只返回一个Name作为string. 如何更改查询nome以使以下代码有效?

string name = nome;

此外,我如何编写改进的查询,以便它使用 lambda 表达式和方法语法而不是当前的查询语法?

4

3 回答 3

6

像这样

string name = nome.Single().Name;

如果您没有得到我怀疑是您想要的结果,这将失败。

您使用 lambda 的查询将是

var credenciadaId = 10;
var name = db.San_Credenciadas
    .Single(c => c.Credenciada_Id == credenciadaId).Name;
于 2012-08-21T13:56:29.800 回答
2
var name = db.San_Credenciadas.First(c => c.Credenciada_Id == Credenciada_Id).Name
于 2012-08-21T13:56:03.090 回答
1

值得注意的是,如果你要使用collection.Single()或者collection.Single(x => x.Onething == someValue)你的收藏必须有一个与之匹配的项目,否则它会抛出异常。

至于collection.First(),你只是想确保它collection实际上有一些数据,所以你可以,例如,使用if (collection.Any())

一般来说,我会选择使用collection.SingleOrDefault()或者collection.FirstOrDefault()检查从那里返回的值是否不为空。如果没有,那么你可以得到这个名字。如果它空,那么您可以根据需要处理错误。

于 2012-08-21T14:43:39.243 回答