持久集合哈希代码

本文关键字:代码 哈希 集合 | 更新日期: 2023-09-27 18:31:27

请参阅下面的对象。我需要做的是在实体框架中查询包含特定选项集合的 MyObject 实例。例如,我想要所有 MyObject,其中选项集合包含选项 ID = 1 和选项 ID = 5,没有其他选项。

public class MyObject
{
    public int Id { get; set; }
    //... More Properties
    public IEnumerable<Option> Options { get; }
}
public class Option
{
    public int Id { get; set; }
    public string Name { get; set; }
}

我正在考虑尝试实现某种选项哈希并持久化它。然后,我的查询将是"Where MyObject.OptionHash == [HASH]"。据我所知,典型的哈希算法无法生成保证的唯一哈希。任何意见或建议将不胜感激。

持久集合哈希代码

以下查询应该可以做到这一点。

var itemsToCheck = new int[] {1, 5};
var filtered = myObjects.Where(myObject => !myObject.Options.Except(itemsToCheck).Any())