【发布时间】:2014-04-01 13:00:31
【问题描述】:
public int getPartijId(string naam)
{
Partij partij = null;
try
{
partij = repository.Partij.Single<Partij>(p => p.naam.Equals(naam));
}
catch (InvalidOperationException)
{
}
return partij.partijID;
}
我想通过将数据库中的名称与 linq 语句进行比较,从我们的数据库中获取某个值 (CD&V),但我得到的是一个空值……
对于其余的值,此方法有效,但我怀疑问题出在名称/字符串中的“&”
【问题讨论】:
-
其实
.Single<T>重载不能返回NULL。如果没有找到记录(或多条记录),if会抛出异常。 -
你能说明你是如何调用这个方法的,尤其是你如何给参数
naam一个值吗? -
什么是空? Partij 还是 Partij.PartijID?并向我们展示您比较的值,以及输入和记录的名称。
-
删除正在吞噬异常的try/catch。它说什么? (
Single也会在有多个名为“CD&V”的“partijen”时失败) -
你可以试试
partijID = partijmapper.getPartijId(@"CD&V");(注意@),但至少去掉空的try-catch,这只会让你更难看到发生了什么。
标签: c# database linq entity-framework equals