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

GroupByでLINQ を使用できます。クラスがあると仮定します。

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 に答える