【发布时间】:2019-10-07 15:01:41
【问题描述】:
我有一个接受IQueryable<T> 作为参数的方法,称为attachments。在此方法中,我在多个 if 语句中进一步过滤查询。所以我的代码如下:
if(firstCondition)
{
attachments = attachments.Where(i => i.TestItemId == 1); //3 records in db
DoWork(attachments);
}
if(secondCondition)
{
attachments = attachments.Where(i => i.TestItemId == 2); //2 records in db
DoWork(attachments);
}
...
在DoWork();我愿意:
foreach(var items in attachments)
{
//write attachment name to file here
}
在数据库中,我总共有 5 条记录,在第一个 if 语句中我得到了适当的结果。然而,在第二个if 条件下,我在查询中得到 0 结果。有人可以告诉我哪里出错了。
请注意两个 if 条件都为真。
【问题讨论】:
-
连接
Where条件会产生AND查询。因此,这两个组合的结果是SELECT * FROM attachments WHERE TestItemId = 1 AND TestItemId = 2。也许你在想OR -
@Silvermind 你会建议我采取什么方法?我会在每个 if 条件下创建一个
var -
您想对您的条件进行 OR 逻辑吗?即id是1还是2?
-
@Chris 如果我只想要 ID 为 1 的项目,则首先进入内部,如果 ID 为 2,则进入第二个项目,因此不需要。我一共有8个条件要满足
标签: c# iqueryable