从具有最低属性的哈希集中返回对象

本文关键字:哈希 集中 返回 对象 属性 | 更新日期: 2023-09-27 17:54:40

我想从最小对象的哈希集中获得对象元素。属性值。

我可以让它返回那个值:

int minProperty = collection.Min(c => c.property);

但是我需要完整的元素或索引来获得元素。不幸的是,与列表不同,哈希集没有Find或IndexAt方法。可能是因为它不像列表那样排序。

Class MyItem
{
public int value;
public string text;
}
HashSet<MyItem> itemCollection = new HashSet<Myitem>() { new MyItem() { value = 4, text = "A"},
 new MyItem(){ value = 20, text = "B"}};
MyItem lowestFind = itemCollection.//??

从具有最低属性的哈希集中返回对象

您可以使用OrderBy,按value属性按升序排序,然后获得第一项:

itemCollection.OrderBy(x => x.value).First();

如果你也想获得索引,你可以这样做:

var itemAndIndex = itemCollection
               .Select({x,idx} => new { item = x, index = idx})
               .OrderBy(a => a.item.value)
               .First();
var item = itemAndIndex.item;
var index = itemAndIndex.index;