C# - 二进制运算符“等于”未定义于类型“System.Int64”。
C# - 二进制运算符“等于”未定义于类型“System.Int64”。
我正在遇到这个错误,我非常确定是什么原因造成的,但不确定如何修复它。
我正在使用 entity framework code first
,我在我的实体中有一个外键,我故意将其设置为 long?
:
public long? ClientId { get; set; } public virtual Client Client { get; set; }
然后我使用从数据库中创建的数据来填充 DataGridView
,这就出现了问题。我正在使用自定义搜索/筛选来筛选 dgv
的元素,这个自定义筛选的代码是继承的。它一直运行得很好,但当我尝试使用 ClientID
进行筛选时,就会出现发帖名的错误。
我开始调试,看到了这个:
if (property.PropertyType == typeof(string)) {//some code else if (property.PropertyType == typeof(bool)) {//other code else if(rule.Data.Equals("1") || rule.Data.ToLower().Equals("true")) {//again some code else if (property.PropertyType == typeof(Int32)) {//some code ...
由于我的值是类型为 long?
,所以我不符合以下条件,因此我的代码进入默认条件,即:
else { long value = 0; if (long.TryParse(rule.Data, out value)) {..code
根据调试器,解析返回 true,因为我进入了 if
主体,但然后我收到了上面的错误,我的属性类型是 System.Nullable1[System.Int64]
。
我有第二个使用完全相同逻辑的外键,他一切工作正常。我能看到的唯一区别是对于工作的情况,类型是 long
,而对于错误的情况,类型是 long?
。
我想保留类型 long?
,但不知道这种情况是否有任何解决方法。
admin 更改状态以发布 2023年5月21日