我有一个这样的课程:
class item
{
public string itemID { get; set; }
public string itemName { get; set; }
public decimal itemPrice{ get; set; }
}
我有这样的清单:
List<item> myItems = new List<item>();
我想以最低价格获得商品的ID。
我得到这样的最低价格:
var minprice = myItems.Min(itemobj => itemobj.itemPrice);
如何获取具有最低价格的对象的物品ID?或者换句话说,对象的itemID是:
itemPrice == minprice;
答案 0 :(得分:3)
试试这个:
尝试获取整个项目
var minPriceItem = myItems.OrderBy(i => i.itemPrice).FirstOrDefault();
然后只使用它的属性:
decimal price = minPriceItem.itemPrice;
string id = minPriceItem.itemID;
答案 1 :(得分:2)
我可能会这样做:
var minprice = myItems.Min(itemobj => itemobj.itemPrice);
// use .First instead of .Single in case there are 2 or more items with the same min price
// use .FirstOrDefault instead of .First in case the sequence is empty
var itemWithMinPrice = myItems.FirstOrDefault(itemobj => itemobj.itemPrice == minprice);
如果您想要所有物品的最低价格:
var itemsWithMinPrice = myItems.Where(itemobj => itemobj.itemPrice == minprice);
您也可以使用聚合函数
进行高级操作var itemWithMinPrice = myItems.Aggregate((cheapestItem, nextItem) => (cheapestItem == null || cheapestItem.itemPrice > nextItem.itemPrice) ? nextItem : cheapestItem);
或者你可以使用MoreLinq(我可以推荐这个,MoreLinq太棒了)
var itemWithMinPrice = myItems.MinBy(itemobj => itemobj.Price);