将多行合并为一个

时间:2018-08-20 21:42:01

标签: c# linq

我有一个问题,如何将多行合并为一个。

我有一张这样的桌子

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();
                    }
                }

1 个答案:

答案 0 :(得分:1)

似乎您想对Text上的Code进行分组;如果group几个项,则Line应该对其进行排序。您可以尝试使用 Linq

证明file实现了IEnumerable<MyClass>,其中MyClass具有CodeLineText个可以放置的属性(字段)

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)));