C# 使用C从字符串中删除值

C# 使用C从字符串中删除值,c#,C#,在我的aspx.cs页面中有以下字符串。这两个字符串都是动态的 string fromDB=12,24,25,45,67,78,90是一个动态字符串 我有另一个字符串,它有两个或多个值,如下所示 string anotherStr = "24,67" 我不知道如何从数据库中删除其他str值 最后我需要12,25,45,78,90。我不知道如何使用c来实现这一点 string fromDB = "12,24,25,45,67,78,90"; string anot

在我的aspx.cs页面中有以下字符串。这两个字符串都是动态的

string fromDB=12,24,25,45,67,78,90是一个动态字符串

我有另一个字符串,它有两个或多个值,如下所示

string anotherStr = "24,67"
我不知道如何从数据库中删除其他str值

最后我需要12,25,45,78,90。我不知道如何使用c来实现这一点

        string fromDB = "12,24,25,45,67,78,90";
        string anotherStr = "24,67";

        var result = fromDB.Split(',').Except(anotherStr.Split(',')).ToList();

        Console.WriteLine(string.Join(",", result));
        Console.ReadLine();
这会将字符串拆分为数组,然后从fromDB中排除其他str中的任何条目


注意,使用Except意味着将从数据库中删除任何重复项-根据。

您可以执行以下操作

HashSet<string> all = new HashSet<string>(fromDB.Split(',')),
                toRemove = new HashSet<string>(anotherStr.Split(','));

foreach(var item in toRemove) {
     all.Remove(item);
}

将您的难题拆分为多个简单问题:

使用例如String.Split将逗号分隔的字符串转换为字符串列表或字符串数组。 了解如何使用例如Enumerable.Except从一个列表中删除第二个列表中的所有列表项。 使用例如string.Join将列表转换回逗号分隔的字符串。 对于所有这些简单的问题,可以在这里找到解决方案。

我建议使用HashSet和Linq:

请注意,Except会删除fromDB中的重复项,而Where会保留它们。

使用Linq:

string.Join(",", fromDB.Split(',').Except(anotherStr.Split(',')))

将两个字符串拆分为两个数组,使第一个数组成为列表:

循环第二个数组,并从第一个数组中删除它的值,这是不能对字符串[]执行的,因此是上一个ToList

然后加入现在修改过的第一个数组以获得单个字符串:

var finalString = String.Join(fromDbList, ",");

不能这样做,因为fromDB中不存在另一个str。如果要排除这些值,应在将数字列表转换为字符串之前进行排除。最好是在数据库中,先用逗号拆分,然后将每个片段解析为int,再插入集合,然后用逗号拆分,然后将每个片段解析为int,再从集合中删除,然后使用字符串连接其余部分。join可再次添加逗号。您是否尝试过用逗号拆分这些字符串,然后像数组一样迭代它们?我可能不是最好的方法,但很容易这一切听起来都像你应该实际使用整数数组:int[]fromDB={12,24,25,45,67,78,90};和int[]另一个数组={24,67};。有了这些,事情就简单多了。你有没有可能在两个字符串中都有重复的项目?谢谢@ThePerplexedOne!这种方法的缺点是,它可能会从数据库中删除任何重复项。但是,正如你所指出的,除了有同样的问题。谢谢分享@mjwills:我的代码在fromDB中保留了重复项,而Except删除了它们。啊,是的,你在我发表评论后更改了代码。但你是对的,你编辑的代码完全符合要求。干得好!这种方法的缺点是它可能会从数据库中删除任何重复项。公平地说,我的解决方案也有同样的问题:你能在数组上调用Remove吗?用12,12,24,24,25,45,67,78,90和12,24作为输入测试这段代码。
var fromDbList = fromDb.Split(',').ToList();

var anotherStrArray = anotherStr.Split(',');
foreach (var valueToDelete in anotherStrArray)
{
    fromDbList.Remove(valueToDelete);
}
var finalString = String.Join(fromDbList, ",");