当我知道它应该返回至少一个结果时,我有一个 LINQ 查询没有返回任何结果。我正在动态构建查询。在我到达过滤掉所有结果的行之前,我查看了调试器中的结果集,它包含数百行。在这一行之后,当它确实应该包含至少一个时,它包含 0。
query = query.Where(x =>
x.Lineages.FirstOrDefault().Sire.Contains(options.PedigreeContains));
在这种情况下,“x”表示一个名为“Horse”的实体。'options.PedigreeContains' 只是一个字符串值。Lineages 表如下所示:
ID HorseID Sire Dam etc...
我什至可以在调试器中拉出一个 Horse 实体(我知道应该返回一个作为结果的实体),检查 Lineages 属性并查看它已完全填充,包括与我的搜索匹配的 Sire 值。所以一切似乎都应该正常工作,除了我正在使用的 LINQ 查询显然存在一些问题。
有没有人认为我正在做的事情有任何本质上的错误,这会导致过滤掉我知道应该存在的结果?
编辑:为澄清起见,这是一对一的关系。我知道 Lineages 对象存在,我知道只有一个,而且我知道它匹配。只是由于某种原因它返回零结果,所以我认为我编写查询的方式可能存在问题。如果该查询应该按照其编写的方式工作(减去所有额外的“可能性”,如果不存在血统,不止一个等),那么它一定是我代码中其他地方的问题。