所以我有一个类似于下面这样的查询:
var clams = from clam in Clams
where clam.ClamTypeID == 143 &&
clam.ParentClamID == null
select clam;不会太疯狂,返回我需要的结果。但是,当我在一个函数中使用它时,我会将可能的空值作为int传递进来吗?我开始遇到一个问题。下面是我的函数:
public IQueryable<Clam> getAllClams(int clamTypeID, int? parentClamID)
{
return from clam in Clams
where clam.ClamTypeID == clamTypeID &&
clam.ParentClamID == parentClamID
select clam;
}此函数不返回任何内容-我检查了参数以确保它们是正确的和足够确定的,parentClamID ==为null,仍然没有结果。如果我将clam.ParentClamID == parentClamID更改为clam.ParentClamID == null,它会起作用,所以我假设我使用的是int?incorrectly...any idea是我在这里做错了什么吗?
发布于 2010-01-14 01:08:54
我以前就遇到过这个问题。我发现的变通方法是:
public IQueryable<Clam> getAllClams(int clamTypeID, int? parentClamID)
{
return from clam in Clams
where clam.ClamTypeID == clamTypeID &&
object.Equals(clam.ParentClamID, parentClamID)
select clam;
}发布于 2010-01-14 01:15:41
public IQueryable<Clam> getAllClams(int clamTypeID, int? parentClamID)
{
return from clam in Clams
where clam.ClamTypeID == clamTypeID &&
clam.ParentClamID == parentClamID.HasValue ? parentClamID.Value : null
select clam;
}发布于 2010-01-14 01:09:27
试试这个:
public IQueryable<Clam> getAllClams(int clamTypeID, int? parentClamID)
{
var result = from clam in Clams where clam.ClamTypeID == clamTypeID select clam;
if(parentClamID.HasValue) result = result.Where(c => c.ParentClamID == parentClamID);
else result = result.Where(c => c.ParentClamID == null);
return from clam in result select clam;
}https://stackoverflow.com/questions/2058616
复制相似问题