检查是list属性的其中一个值中的字符串?

时间:2017-07-18 07:59:28

标签: c#

我有一个公共课。

public class StoreItems 
{
    public string itemName;
    public string itemPrice;
    public string itemQuantity;
}

我有一个清单。

public List <StoreItems> itemData = new List<StoreItems> ();

用户将输入一个项目名称,我应该检查该项目名称是否已经在我的itemData的itemName中。

我目前的代码是这样的

if (itemData.Find(x => x.itemData.Equals(userInput))
 {
  //already in list
 }
else
 {
 //add data
 }

但是,我收到错误,说itemData无法隐式转换为bool。提示将不胜感激

2 个答案:

答案 0 :(得分:10)

您可以使用LINQ轻松实现此目的。

IEnumerable

Any检查{{1}}的所有项目是否与给定的谓词匹配。

答案 1 :(得分:3)

由于您有List<>且已尝试使用List<T>.Find,因此也适用:

StoreItems matchingItem = itemData.Find(si => si.itemName == userInput);
if (matchingItem != null)
{
    //already in list
}
else
{
    //add data
}

当然,只有列表中没有空引用时才有效。