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
的元素是否包含特定值。更确切地说,我想检查是否存在pricePublicModel.Size == 200
?另外,如果这个元素存在,如何知道它是哪一个?
EDIT如果Dictionary更适合这个,那么我可以使用Dictionary,但我需要知道如何:)
答案 0 :(得分:172)
如果您有一个列表,并且想知道列表中存在哪个符合给定条件的元素,则可以使用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
}
答案 1 :(得分:111)
bool contains = pricePublicList.Any(p => p.Size == 200);
答案 2 :(得分:23)
您可以使用exists
if (pricePublicList.Exists(x => x.Size == 200))
{
//code
}
答案 3 :(得分:13)
使用LINQ非常容易:
var match = pricePublicList.FirstOrDefault(p => p.Size == 200);
if (match == null)
{
// Element doesn't exist
}
答案 4 :(得分:9)
您实际上并不需要LINQ,因为List<T>
提供的方法完全符合您的要求:Find
。
搜索与指定谓词定义的条件匹配的元素,并返回整个
List<T>
中的第一个匹配项。
示例代码:
PricePublicModel result = pricePublicList.Find(x => x.Size == 200);
答案 5 :(得分:3)
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
}
答案 6 :(得分:0)
您也可以只使用 List.Find()
:
if(pricePublicList.Find(item => item.Size == 200) != null)
{
// Item exists, do something
}
else
{
// Item does not exist, do something else
}