从具有最低属性的hashset返回对象?

时间:2014-03-29 12:37:43

标签: c# hashset

我想从具有最小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.//??

1 个答案:

答案 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;