定义我得到这个错误,我非常有信心是什么导致它,但不是很确定如何解决它。C# - 二进制运算符Equal没有为类型'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?
,但不知道是否有任何解决方法。
因此,您在未向我们显示的代码中收到错误,我是否正确理解该错误? – 2013-02-26 12:23:19
“你看到那个代码”在哪里?该方法的目的是什么(该方法的名称有助于识别)。另一个非常重要的问题是:什么是错误? – 2013-02-26 12:30:54
是的,该项目非常大,所以我试图找出问题。如果我不明白,那么我想我必须自己做。但是fwi调用这个方法的代码是'GridFilterResult result = service.List(gridSettings);'。但我认为这个问题是我试图把'long?'解析为'long'我试图给'long?添加一个特定的情况,但是似乎不允许解析为'long?'...... –
Leron
2013-02-26 12:31:01