0

我有一个这样的清单,

List A

ItemNum                  FileName

001                      A.txt,B.txt,A.txt,B.txt
002                      A.txt,C.txt,A.txt,C.txt

我需要做一个这样的清单。

ItemNum                  FileName

001                      A.txt,B.txt
002                      A.txt,C.txt

有什么办法吗?

4

3 回答 3

1

区分大小写,采用方法格式:

public List<string> ToDistinct(IEnumerable<string> input)
{
    List<string> unique = new List<string>();

    foreach (string s in input)
    {
        List<string> files = s.Split(',').ToList();
        unique.Add(String.Join(",", files.Distinct()));
    }

    return unique;
}

这是一个控制台方法,可以像上面一样显示输出,如果您愿意,可以对其进行调整:

public static void Main(string[] args)
{
    List<string> input = new List<string>{"A.txt,B.txt,A.txt,B.txt", "A.txt,C.txt,A.txt,C.txt"};

    //Display Input
    Console.WriteLine("Input");
    Console.WriteLine("ItemNum                  FileNames");
    for(int i = 0; i < input.Count(); i++)
    {
        Console.WriteLine(String.Format(" {0,-23:000}{1}", i + 1, input[i]));
    }

    //Build the Unique List
    List<string> unique = new List<string>();

    foreach (string s in input)
    {
        List<string> files = s.Split(',').ToList();
        unique.Add(String.Join(",", files.Distinct()));
    }

    //Display Output
    Console.WriteLine();
    Console.WriteLine("Output");
    Console.WriteLine("ItemNum                  FileNames");
    for(int i = 0; i < unique.Count(); i++)
    {
        Console.WriteLine(String.Format(" {0,-23:000}{1}", i + 1, unique[i]));
    }

    Console.ReadKey();
}
于 2012-08-20T04:22:32.527 回答
0

我将建议您将 FileName 转换为 a List<string>,那么您所需要的就是:

listA.ForEach(x => x.FileNames = x.FileNames.Distinct().ToList());

如果没有具体原因为什么要存储 - 对于所有意图 - 字符串中的列表..为什么不将其存储为一个?List<string>将允许您根据需要添加和删除。

于 2012-08-20T04:40:00.160 回答
0
List<Item> list = new List<Item>();
list.Add(new Item("001", "A.txt,B.txt,A.txt,B.txt"));
list.Add(new Item("002", "A.txt,C.txt,A.txt,C.txt"));
var newList = from l in list
              select new Item() { ItemNum = l.ItemNum, 
                                  FileName = string.Join(",", l.FileName.Split(',').Distinct()) };
于 2012-08-20T06:08:20.570 回答