Funcion SQL para convertir cadena separada por caracter en tabla

Va la funcion

CREATE FUNCTION SplitCadena
(
 @cadena VARCHAR(MAX)
 ,@separator VARCHAR(MAX)
)
RETURNS @tabla TABLE
(
 value VARCHAR(MAX)
)
BEGIN
DECLARE @individual varchar(max) = null
WHILE LEN(@cadena) > 0
 BEGIN
 IF PATINDEX('%' + @separator + '%',@cadena) > 0
 BEGIN
 SET @individual = SUBSTRING(@cadena, 0, PATINDEX('%' + @separator + '%',@cadena))
 INSERT INTO @tabla values(@individual)
SET @cadena = SUBSTRING(@cadena, LEN(@individual + @separator) + 1, LEN(@cadena))
 END
 ELSE
 BEGIN
 SET @individual = @cadena
 SET @cadena = NULL
 INSERT INTO @tabla values(@individual)
 END
 END;
RETURN;
END
GO

Eliminar duplicados List<> C#

Se tiene la clase item con atributos Name, Code y Price

Se debe de crear una nueva clase que permitirá el filtro de duplicados, por ejemplo

class DistinctItemComparer : IEqualityComparer<Item> {

    public bool Equals(Item x, Item y) {
        return x.Id == y.Id &&
            x.Name == y.Name &&
            x.Code == y.Code &&
            x.Price == y.Price;
    }

    public int GetHashCode(Item obj) {
        return obj.Id.GetHashCode() ^
            obj.Name.GetHashCode() ^
            obj.Code.GetHashCode() ^
            obj.Price.GetHashCode();
    }
}

La lista filtrada se invoca entonces de la siguiente manera

 

var distinctItems = items.Distinct(new DistinctItemComparer());