我想从具有最小object.property值的hashset中获取object元素。
我可以通过以下方式返回该值:
int minProperty = collection.Min(c => c.property);
但是我需要完整的元素或索引来获取元素。不幸的是,与list不同,hashset没有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.//??
答案 0 :(得分:2)
您可以使用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;