Generic LinkedList with add/exists/delete/dlear/iteration functionality
I would implement ICollection&lt;T&gt; in addition to IEnumerable&lt;T&gt;. It should be easy and straightforward.
Public setters of the Head and Tail properties will allow users of your class to corrupt the structure of linked list.
Not sure if you need to expose Head and Tail as properties at all, as they are the only ones who expose the SinglyLinkedListNode&lt;T&gt; instances used internally.
AddToEnd implementation can be simplified. The case of Head == Tail doesn't differ from else clause. So the method can be refactored as following (note that the non-null Head implies non-null Tail, this should be guaranteed by the design of your class):

public void AddToEnd(T value)
{
    var newNode = new SinglyLinkedListNode&lt;T&gt;
    {
        Value = value,
        Next = null
    };

    if (Head == null)
    {
        Head = newNode;
    }
    else
    {
        Tail.Next = newNode;
    }

    Tail = newNode;
}

Similar refactorings can be applied to AddToBeginning. When you create a new node to be inserted at the beginning, its Next property will always refer to original Head node, whether it was null (list is empty) or actual node. Thus the method can be reduced to:

public void AddToBeginning(T value)
{
    Head = new SinglyLinkedListNode&lt;T&gt;
    {
        Value = value,
        Next = Head
    };

    if (Tail == null)
    {
        Tail = Head;
    }
}

Delete method has a bug - it will never assign null to Tail, even if all elements are deleted from the list.