3

我想制作一个包含唯一值的 MVC C# 列表。这是场景。我的清单是这样的:

清单 A

ItemNo       FileName 

001      =>   A.txt
001      =>   B.txt
002      =>   A.txt
002      =>   B.txt
003      =>   A.txt

我想让它成为一个新的列表,比如,

清单 B

ItemNo       FileName 

001      =>   A.txt, B.txt
002      =>   A.txt, B.txt
003      =>   A.txt

有什么办法可以使它可行吗?

4

2 回答 2

4

您可以将 LINQ 与GroupBy一起使用,假设您有课程:

class Item
{
    public string ItemNo { get; set; }
    public string FileName { get; set; }
}

var result = list.GroupBy(item => item.ItemNo)
                 .Select(g => new Item
                   {
                       ItemNo = g.Key,
                       FileName = string.Join(", ",  g.Select(s => s.FileName))
                   });
于 2012-08-18T07:37:31.090 回答
1

这有帮助吗?

方法

var result = new Dictionary<string, string>();
foreach (var fileAssistant in duplicateList)
{
    if (result.ContainsKey(fileAssistant.ItemNo))
    {
        result[fileAssistant.ItemNo] = string.Format("{0}, {1}", result[fileAssistant.ItemNo], fileAssistant.FileName);
    }
    else
    {
        result.Add(fileAssistant.ItemNo, fileAssistant.FileName);
    }
}

设置

var duplicateList = new List<FileAssistant>(new[]
                                        {
                                            new FileAssistant("001", "A.txt"), 
                                            new FileAssistant("001", "B.txt"), 
                                            new FileAssistant("002", "A.txt"), 
                                            new FileAssistant("002", "B.txt"),
                                            new FileAssistant("003", "A.txt")
                                        });

文件助手类

public class FileAssistant
{
    public FileAssistant() { }
    public FileAssistant(string itemNo, string fileName)
    {
        ItemNo = itemNo;
        FileName = fileName;
    }

    public string ItemNo { get; set; }
    public string FileName { get; set; }
}
于 2012-08-18T07:36:46.463 回答