我有一个问题,如何将多行合并为一个。
我有一张这样的桌子
Code Line Text
------------------------
001 1 some text
002 1 some text
002 2 next some text
003 3 some text
关键是一个代码可以有多行。
到目前为止,我有一本字典来检查代码是否存在(如果不存在),然后将该文本及其代码添加到字典中。但是,如何检查是否有一个以上的代码(多行)并合并为一个?
foreach (var item in file)
{
if (!dict.ContainsKey(item.CODE))
{
dict.Add(item.CODE, item.NOTE);
}
}
感谢大家的帮助,不仅字典,还有其他选择!
编辑,感谢@Rufus的回答,我解决了我的问题。解决方案:
foreach (var item in file)
{
if (!dict.ContainsKey(item.CODE.ToString()))
{
dict.Add(item.CODE.ToString(), item.NOTE.ToString());
}
else
{
dict[item.CODE.ToString()] += " " + item.NOTE.ToString();
}
}
答案 0 :(得分:1)
似乎您想对Text
上的Code
进行分组;如果group
有几个项,则Line
应该对其进行排序。您可以尝试使用 Linq
证明file
实现了IEnumerable<MyClass>
,其中MyClass
具有Code
,Line
,Text
个可以放置的属性(字段)
var dict = file
.GroupBy(item => item.Code)
.ToDictionary(group => group.Key,
group => string.Join(Environment.NewLine, group
.OrderBy(item => item.Line)
.Select(item => item.Text)));