比较2个字符串List由第一个单词到控制字符

时间:2017-09-18 19:45:07

标签: c# list except

是否可以将第一个单词的2个字符串列表与控制字符进行比较?

说字符串是 -

“黄色/高/宽/白”

有没有使用 -

newList = listOne.Except( listTwo ).ToList();

但只比较第一个'/'

感谢。

1 个答案:

答案 0 :(得分:1)

一种非常简单的方法如下:

var result = list1.Where(str1 => !list2.Any(str2 => str2.Split('/')[0] == str1.Split('/')[0]));

或者,您可以使用Except,但这需要您创建自定义IEqualityComparer

public class CustomStringComparer : IEqualityComparer<string>
{
    public bool Equals(string x, string y)
    {
        // Ensure that neither string is null
        if (!object.ReferenceEquals(x, null) && !object.ReferenceEquals(y, null))
        {
            var x_split = x.Split('/');
            var y_split = y.Split('/');

            // Compare only first element of split strings
            return x_split[0] == y_split[0];
        }

        return false;
    }

    public int GetHashCode(string str)
    {
        // Ensure string is not null
        if (!object.ReferenceEquals(str, null))
        {
            // Return hash code of first element in split string
            return str.Split('/')[0].GetHashCode();
        }

        // Return 0 if null
        return 0;
    }
}

var result = list1.Except(list2, new CustomStringComparer());