繁体   English   中英

在C#中比较TimeStamp值

[英]Comparing TimeStamp value in C#

我在现有数据库中创建了一个新列,以允许我使用RowVersion进行并发操作:

alter table MyTable add ColumnName rowversion

在我的课堂上,我添加了以下属性

public byte[] ColumnName { get; set; }

在使用此类的一种方法中,使用此属性时出现错误

无法将类型'System.Data.Linq.Binary'隐式转换为'byte []'

我通过向属性添加ToArray (myObj.ColumnName.ToArray())克服了这一问题。

在我的ASP .Net页面中,我向Repeater添加了一个隐藏控件,并将值分配为

RowHiddenField.Value = Convert.ToBase64String(myObj.ColumnName);

现在,我正在尝试将此列与传入的对象进行比较

public bool RowModified(MyObject myObj)

objFound = GetAllObjects.First(o=> o.ID = myObj.ID);

If (objFound.ColumnName == myObj.ColumnName)

但是值永远不一样吗?

在阅读了转换TimeStamp的一些链接之后,我尝试了它们,但是它们要么没有起作用(可能是我感到困惑并且做错了什么),要么它不适用于我的情况。

感谢对此的任何帮助。

我对SQL rowversion格式一无所知。 好像mss在评论中提供的链接可能会对您有所帮助。

但是,如果您只关心equal ,那么只需比较两个byte []对象就足够了。 您的代码的问题在于数组不会覆盖Equals()或提供==重载。 因此,使用==只是比较两个始终相同的对象引用。

有关如何正确(轻松地)比较两个数组的详细信息,请参见此先前提出的问题: 在C#中比较数组的最简单方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM