C# 从逗号分隔的列表中删除重复项

C# 从逗号分隔的列表中删除重复项,c#,C#,我用C#编写了以下程序,以删除字符串中的重复元素。但是,此程序无法删除逗号分隔字符串中的重复元素。有人能帮我从逗号分隔的列表中删除下面代码中类似48375的重复项吗 using System.IO; using System; using System.Linq; class Program { static void Main() { string inf = "48375 , 36143 , 66516 , 332674 , 107028 , 319546

我用C#编写了以下程序,以删除字符串中的重复元素。但是,此程序无法删除逗号分隔字符串中的重复元素。有人能帮我从逗号分隔的列表中删除下面代码中类似48375的重复项吗

using System.IO;
using System;
using System.Linq;

class Program
{
    static void Main()
    {
        string inf = "48375 , 36143 , 66516 , 332674 , 107028 , 319546 , 362998 , 324285 , 110470 , 47870 , 17507 , 331420 , 59873 , 19531 , 107100 , 102487 , 97561 , 332674 , 322436 , 348305 , 44900 , 89921 , 41063 , 105962 , 319546 , 80476 , 363510 , 65760 , 344153 , 52328 , 51692 , 101922 , 359192 , 341859 , 37437 , 356670 , 37550 , 91952 , 349196 , 69361 , 52663 , 110705 , 48701 , 99730 , 343144 , 22001 , 66516 , 85782 , 362998 , 324285 , 16487 , 332329 , 352225 , 329868 , 36143 , 48375 , 97871";

        Console.Out.WriteLine(string.Join(" , ", inf.Split(',').Distinct().ToList().ToArray()));
    }
}
C#工作正常-您在输出中看到的两个48375确实是不同(唯一)的字符串

您的第一个48375是
“48375”
,末尾有空格,下一个48375是
“48375”
,开头和结尾都有空格。对C来说,这是完全不同的事情

有几种简单的方法可以解决这个问题,但这并不是一个详尽的列表:

  • 拆分为
    ,“
    字符串,而不是
    ,”
    字符(必须使用大小为一个字符串的数组)
  • 在开始之前删除所有空格
  • 也在空格上拆分(删除空条目)或
  • 将每个项目的空格修剪掉
以下是代码:

string.Join(" , ", inf.Split(new[] { " , " }).Distinct());

string.Join(" , ", inf.Replace(" ", "").Split(',').Distinct());

string.Join(" , ", inf.Split(new[]{',', ' '}, StringSplitOptions.RemoveEmptyEntries).Distinct());

string.Join(" , ", inf.Split(',').Select(e => e.Trim()).Distinct());
通常,您不需要同时执行
ToList()
ToArray()
——根据您是否计划执行更多操作(如添加/删除项)(使用
ToList()
)或仅将数据作为简单数组进行某种只读访问(使用
ToArray()
)来选择其中之一


在这种情况下,您甚至不需要执行任何操作-
string.Join
可以处理
IEnumerable
,该
Distinct()
返回在Distinct op之前使用trim

            Console.Out.WriteLine(string.Join(" , ", inf.Split(',').Select(o=>o.Trim()).Distinct().ToList().ToArray()));

请使用以下选项-


string uniqIds=string.Join(“,”,inf.Split(“,”).Select(o=>o.Trim()).ToList().Distinct())

因为在第二个的两边都有空间。