我有List
Objects
,对象有ID,文件名,状态(枚举器),DateStamp,UserId。
使用Linq
我使用List
过滤UserId
并将其发送到网络应用。
我需要为过滤结果获取某种Unique Id
并在下次比较它以检测当前用户的更改。如果为当前用户或现有对象的属性添加的新对象已更改Unique Id
应该不同。
我尝试使用下面的代码来获取Hash Code,但是对于每个myList对象,哈希代码都是不同的,即使对象和对象属性是相同的。有什么想法吗?
myList= _queueList.GetItems(p => p.User.Id == userId)
.OrderByDescending(p => p.DateStamp)
.ToList();
myList.GetHashCode()
答案 0 :(得分:1)
var uniqueId = string.Join(",", myList.Select(x=>x.Id.ToString()).ToArray());
如果字符串很长,你可以生成一个md5或sha1并返回它。
答案 1 :(得分:1)
你可以利用这样的内置加密:
string hash = Convert.ToBase64String(
new SHA1CryptoServiceProvider().ComputeHash(
Encoding.UTF8.GetBytes(
string.Join(":", myList.Select(obj => obj.Id.ToString()).ToArray()
)));
我将Convert.ToBase64String()
设置为对网络友好(请注意:如果您有许多记录,结果字符串可能会变得很长!)