我正在使用以下LINQ获得6 Offer
,其中包含Min ListPrice
且其OfferCode包含“dtv”但我得到以下异常
至少有一个对象必须实现IComparable。
这是我的代码:
List<Offer> dtvOffers =
offerList.Where(x => (x.ListPrice == offerList.Min(y=>y.ListPrice)) &&
(x.OfferCode.ToLower().Contains("dtv")))
.Take(6)
.ToList();
我做错了什么?
答案 0 :(得分:2)
问题在于使用Min()
功能。因为您使用自己的类(可能)来执行查询,所以Linq需要确切知道如何进行比较以了解List中的哪个对象是Minimum。为此,您必须在IComparable
类上实现Offer
接口并编写自定义比较方法。
另一个想法(如果您不想沿着IComparable
路线前进)将使用OrderBy()
对集合进行排序,并指定要用于比较的商品类的属性,然后使用First()
在排序后选择列表中的第一个。
答案 1 :(得分:2)
这里的问题是offerList.Min(y => y.ListPrice)
。
您的ListPrice
似乎是自定义类型,因此系统无法区分其min
或max
。您需要在IComparable
及其代码中实施ListPrice
以删除此错误。