check if something is on a list by one argument

I’ve looking for a way to do this, I created a custom class for the Items stored in the players inventory (a list), but I want to check if the Item is there using its “name” argument so if it is not there add it, and if it is there augment its quantity by +1

I’ve look into List.Contains but since what I need to compare it to its not of the same class I cant use it.

here the code of the Inventory manager (ignore the comments, they are not mine)

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
// This behaviour script would be attached to the player
public class InventoryManager : MonoBehaviour {
  // stores items picked up
  private int ItemID;
  public AudioClip[] PotionSounds;
  private List<IItem> itemsInInventory = new List<IItem>();
  void Update() {
		Debug.Log(itemsInInventory[0].name + "_" + itemsInInventory[0].Cantidad);
		if (Input.GetButtonDown("use")== true){
			Use();
			
		}
		if (itemsInInventory[ItemID].Cantidad == 0){
			 itemsInInventory.RemoveAt(ItemID);
		}
    // check for use input to use item here, or in OnGUI, and call Use()   
  }
	public void AddItem(GameObject Item){
      // We cast to IItem to match our list type. 
      // We can do this because Potion implements IItem.
      // This means we could store different types of items in the list, 
      // as long as they implement IItem.
		Potion ItemScript = Item.GetComponent<Potion>();
		itemsInInventory.Contains
		
		itemsInInventory.Add(new IItem(Item.name,ItemScript.Cantidad,ItemScript.Icon,ItemScript.PotionValue, ItemScript.PotionParticles,ItemScript.Type));
        }  
		
		
		
		
		
      	
		// adds new item to end of list
    
void Use() {
		if (itemsInInventory[ItemID].Cantidad > 0){
		if (itemsInInventory[ItemID].Type == "Potion"){
	GameObject Player = GameObject.FindGameObjectWithTag("Player");
	Player.SendMessage("AddjustCurrentHealth", itemsInInventory[ItemID].Value);
	Player.audio.PlayOneShot(PotionSounds[(Random.Range(0,PotionSounds.Length))]);
	Instantiate(itemsInInventory[ItemID].Particles, Player.transform.position, Quaternion.identity);
	itemsInInventory[ItemID].Cantidad += -1;
		}
	}
    //if (itemsInInventory.Count > 0) {
      // execute UseItem method of first item in list
      /*itemsInInventory[0].UseItem();
      // remove item from list since it has been used
      itemsInInventory.RemoveAt(0);*/
	
    }
}

IItem class:

// Interface, containing only signature (design), not implementation
using UnityEngine;
using System.Collections;

public class IItem  {
  // classes that implement Item should define this method
  public string Type;
  public string name;
  public int Cantidad;
  public Texture2D Icon;
  public int Value;
  public GameObject Particles;
	public IItem(string newName, int newCantidad, Texture2D newIcon, int newValue, GameObject newParticles, string newType){
		name = newName;
		Cantidad = newCantidad;
		Icon = newIcon;
		Value = newValue;
		Particles = newParticles;
		Type = newType;
		
		
	}
}

Thanks

Use Linq:

   using System.Linq;

   ...

   if(!itemsInInventory.Any(i=>i.name == "somename"))
   {
      //Add it?
   }