根据对象的属性创建组标识符

时间:2011-08-14 16:52:16

标签: c# .net

我有一个对象,它将填充一个能够通过复选框删除的网格。问题是对象是由一些属性分组的,这些属性在创建它们时是常见的。例如,我有对象

public class GroupedObject
{
    Name { get; set; }
    Level { get; set; }
    Assignment { get; set; }
    AssignmentDate {get; set; }
}

在这个例子中,当我从gui中保存GroupedObjects时,我有多个对象,Name属性设置不同,但可以为它们分配相同的Level,Assignment和AssignmentDate。因此,这三个属性使批处理独特。我想知道创建一个将这三个信息分组的唯一标识符的最佳方法是什么。

我正在思考一些事情
public class GroupedObject
{
    ....
    public int BatchId
    {
        var batchString = string.format("{0}{1}{2}", Level, Assignment, AssignmentDate);
        return batchString.GetHashCode();
    }
}

这种方式在网格上我有办法在后台渲染一些东西,这样当我在组中选择一个项目时,就会选择“批次项目”。

是否存在替代/标准方式来处理这样的事情或由实施者来决定。

1 个答案:

答案 0 :(得分:1)

据我所知,没有标准的方式来做你想要的事情,所以非常接近实现。

我对你的实现唯一的问题是创建一个字符串 - 你可以通过获取属于复合ID的所有成员的哈希码并从中生成不同的哈希码来做得更好。有关提示,请参阅this post

注意:

如果性能是一个问题(大量数据绑定到网格),您应该测试不同的算法,看看哪种算法最适合您的情况。