我试图弄清楚如何在某些值可以为空的 LINQ 中进行查询。
接下来是我的桌子:
ID int
Key1 int
Key2 int?
Key3 int?
Value string
uniq = Key1+Key2+Key3+Value
现在我需要根据唯一约束检查现有记录是否已经存在。
我尝试了以下方法:
Object tmp = model.table.FirstOrDefault(row => row.Key1 == newItem.Key1 &&
(row.Key2.HasValue && newItem.Key2.HasValue && row.Key2.Value == newItem.Key2.Value) &&
(row.Key3.HasValue && newItem.Key3.HasValue && row.Key3.Value == newItem.Key3.Value) &&
row.Value == newItem.Value);
和:
Object tmp = model.table.FirstOrDefault(row => row.Key1 == newItem.Key1 &&
row.Key2 == newItem.Key2 &&
row.Key3 == newItem.Key3 &&
row.Value == newItem.Value);
但是当其中一个键为空时,两者都没有得到正确的结果!
有没有办法编写正确的 LINQ 查询?