表达总是正确的(当它不是时)

时间:2010-09-28 05:45:01

标签: c# linq visual-studio-2010

我的表格中有一个查询:

var fruits = (from p in fruitDB
              where (p.Fruit.FruitID == fruitID && p.Color.ColorID != null )
              select p.Color).Distinct();

VS 2010给了我一个蓝色下划线并告诉我“表达永远是真的”。现在我同意我同意数据库中的数据是否没有填满,但在我的情况下,如果我不包含!= null

的添加语句,我将得到null

这是一个错误还是基于我的数据库架构中设置的规则? (即使基础数据与之相矛盾)

3 个答案:

答案 0 :(得分:2)

Color.ColorID是什么类型的?它是整数吗?你应该检查p.Color!= null?

答案 1 :(得分:2)

您能包含实体图吗?

如果Color是一个表而ColorID是它的主键,那么它就不会是可空的。也许你的第一个表中的外键可以为空,但这不是你在这里测试的。

答案 2 :(得分:0)

ColorID可以为空吗?你应该检查是否p.Color.ColorID == 0?