Find a ScriptableObject by a variable it has?

I am trying to find a ScriptableObject using a variable it has. For instance:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AClassName : MonoBehaviour {

public void findItemByID(int ID) {
// A way to find the ScriptableObject by it's value
}
void Start() {
findItemByID(7);
addItemToInventory(the Item we got from findItemByID);
}
}

I’ve been trying to find out a way of doing this for 2 days. Any help would be appreciated!

EDIT: Here’s my ScriptableObject class:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[CreateAssetMenu]
public class Items : ScriptableObject {

	public Sprite itemSprite;
	public string itemName;
	public int itemId;
}

The simplest solution is just load all the ScriptableObjects as normal and place them into a Dictionary<int, YourScriptableObject>. This would be best for performance, but possibly hard on memory.

Otherwise, you could include the ID of the ScriptableObject in it’s filename, and then append that ID to it’s path when you go to load the ScriptableObject. This is low memory use compared to the first solution, but the maintanence suffers because the ID must be hard coded into the filename. This could possibly be alleviated by a custom editor that changes the filename when the ID changes, but that may problems since you are trying to rename the object currently being edited.