如何检查List <T>元素是否包含具有特定属性值的项目
public class PricePublicModel { public PricePublicModel() { } public int PriceGroupID { get; set; } public double Size { get; set; } public double Size2 { get; set; } public int[] PrintType { get; set; } public double[] Price { get; set; } } List<PricePublicModel> pricePublicList = new List<PricePublicModel>();
如何检查pricePublicList
元素pricePublicList
包含一定的值。 更确切地说,我想检查是否存在pricePublicModel.Size == 200
? 另外,如果这个元素存在,怎么知道它是哪一个呢?
编辑如果字典更适合这个,那么我可以使用字典,但我需要知道如何:)
如果您有一个列表,并且您想知道列表中的某个元素与给定条件匹配,您可以使用FindIndex
实例方法。 如
int index = list.FindIndex(f => f.Bar == 17);
其中f => f.Bar == 17
是具有匹配标准的谓词。
在你的情况下,你可能会写
int index = pricePublicList.FindIndex(item => item.Size == 200); if (index >= 0) { // element exists, do what you need }
bool contains = pricePublicList.Any(p => p.Size == 200);
你可以使用存在
if (pricePublicList.Exists(x => x.Size == 200)) { //code }
使用LINQ这很容易:
var match = pricePublicList.FirstOrDefault(p => p.Size == 200); if (match == null) { // Element doesn't exist }
你实际上并不需要LINQ,因为List<T>
提供了一个完全符合你想要的方法: Find
。
search与指定的谓词所定义的条件相匹配的元素,并返回整个
List<T>
的第一个匹配项。
示例代码:
PricePublicModel result = pricePublicList.Find(x => x.Size == 200);
var item = pricePublicList.FirstOrDefault(x => x.Size == 200); if (item != null) { // There exists one with size 200 and is stored in item now } else { // There is no PricePublicModel with size 200 }