我想制作一个带有唯一值的MVC C#List。这是场景。我的清单是这样的:
列出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
有什么方法可以让它变得可行吗?
答案 0 :(得分: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))
});
答案 1 :(得分: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; }
}