通过成员的O(1)查找可查询的对象集合

时间:2019-05-16 14:43:10

标签: c# linq

我需要一个通用集合,该集合能够存储对象并根据对象的成员在O(1)时间内对其进行查询。考虑以下课程:

public class MyObject
{
  public readonly int Id;
  public string Name { get; set; }
  public double Value { get; set; }
}

我想在集合中存储MyObject实例,并能够使用具有(预期)O(1)查找的LINQ按字段/属性查询对象。本质上,成员的值将是匹配对象列表的键。

示例用法可能是:

var uniquePerson = collection.Query( x => x.Id == 10 ).First();
var peopleNamedTom = collection.Query( x => x.Name == "Tom" );

是否存在这样的集合?我猜不是,并且必须自己实现,它将涉及很多反射/动态IL。编写一个专门的字典对每个属性使用字典会容易得多,但是我的目标是使它尽可能通用和可重用。

0 个答案:

没有答案