相关疑难解决方法(0)

使用Linq与自定义IEqualityComparer相交

长话短说:我有2个对象集合.一个包含好的值(让我们称之为"好"),其他默认值(先生"默认").我希望联盟的相交在良好和默认之间,以及默认.换句话说:相交(联合(良好,默认),默认).有人可能认为它解析为默认值,但这里是棘手的:我使用自定义IEqualityComparer.

我得到了以下课程:

class MyClass
{
    public string MyString1;
    public string MyString2;
    public string MyString3;
}

class MyEqualityComparer : IEqualityComparer<MyClass>
{
    public bool Equals(MyClass item1, MyClass item2)
    {
        if(item1 == null && item2 == null)
            return true;
        else if((item1 != null && item2 == null) ||
                (item1 == null && item2 != null))
            return false;

        return item1.MyString1.Equals(item2.MyString1) &&
               item1.MyString2.Equals(item2.MyString2);
    }

    public int GetHashCode(MyClass item)
    {
        return new { item.MyString1, item.MyString2 }.GetHashCode();
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是我的收藏品Good和Default集合的特征:

默认值:它是一个很大的集合,包含所有想要的{MyString1,MyString2}对,但是你可以猜测,MyString3值是默认值.

好:它是一个较小的集合,主要包含默认集合中的项目,但具有一些好的MyString3值.它还有一些{MyString1,MyString2},它们位于想要的集合之外.

我想要做的是:只获取Good中默认的项目,但将Default中的其他项目添加到默认项目中.

这是我认为最好的尝试:

HalfWantedResult = Good.Union(Default, …
Run Code Online (Sandbox Code Playgroud)

c# linq intersection intersect

14
推荐指数
2
解决办法
2万
查看次数

在字符串数组中查找最长的子字符串,并将其从数组中的所有元素中删除

我有这个数组,例如(大小是可变的):

x = ["10111", "10122", "10250", "10113"]
Run Code Online (Sandbox Code Playgroud)

我需要找到最长的字符串,它是每个数组元素的子字符串(在本例中为"10")(它不必是字符串的前缀).我必须从所有字符串中删除它.此示例的输出将是:

x=["111","222","250","113"] //common value = "10"
Run Code Online (Sandbox Code Playgroud)

c c# algorithm search

1
推荐指数
1
解决办法
4342
查看次数

标签 统计

c# ×2

algorithm ×1

c ×1

intersect ×1

intersection ×1

linq ×1

search ×1