我想垂直合并字典

时间:2019-09-26 08:06:40

标签: c# dictionary

要在DWG文件中映射文本表,我创建了字典。

我加载了文本数据,并为每一列制作了字典。

我想制作一个合并每列的新字典。

制作每列的字典时,该字典按顺序排序。 我只想组装每一列以制作一个新的表字典。

如果您有更简单的文本映射方法,请发表评论。

此图显示了问题:

enter image description here

// make a dictionary of text in the table
if ((vText.Point1.X <= xBoundaryEnd) && (vText.Point.X >= xBoundaryStart) && (vText.Point1.Y <= yBoundaryEnd) && (vText.Point.Y >= yBoundaryStart)){

    bomTextDictionary.Add(vText.Handle,
    new textDataType
    {  
        text = vText.UnicodeText,
        refPointX = vText.Point1.X,
        refPointY = vText.Point1.Y
    });
}

// first column of table (number) dictionay by distingushing vertical line from the bomTextDictionary. 
var numberDict = bomTextDictionary.Where(x => x.Value.refPointX >= verticalLineDictionary.ElementAt(0).Value.xStart && x.Value.refPointX <= verticalLineDictionary.ElementAt(1).Value.xStart)
                                 .ToDictionary(text => text.Key, text => text.Value.text);

1 个答案:

答案 0 :(得分:1)

您可以创建一个模型类来存储列(例如名称,数量,零件,工程图),然后将字典与模型一起使用。

示例:

public class TableDWG
{
    public int Key { get; set; }

    public string Name { get; set; }

    public int Quantity { get; set; }

    public string Part { get; set; }

    public string Drawing { get; set; }

    public TableDWG() { }

    public TableDWG(int key, string name, int quatity, string part, string drawing)
    {
        Key = key;
        Name = name;
        Quantity = quatity;
        Part = part;
        Drawing = drawing;
    }

}

然后您执行此操作:

IDictionary<int, TableDWG> table = new Dictionary<int, TableDWG>
{
    // you can do this
    { 1, new TableDWG(1, "something", 5, "part", "drawing") },
    { 2, new TableDWG(2, "something2", 2, "part2", "drawing2") },

    // OR this 
    {3, new TableDWG()
    {
        Key = 3, 
        Name = "Something3", 
        Quantity = 1, 
        Part = "Part 3", 
        Drawing = "Drwaing 3"
    } }
};

这只是一个如何在一个字典中存储多列的示例,还有其他方法,但这是更简单的方法。在模型中。