将类List列表项匹配的Dictionary键加入新列表 - C#

Rom*_*omy 4 c# linq dictionary list

所以我有一个Dictionary字符串值作为键.我有一个班级列表:

listCoord = new List<Coord>();
Run Code Online (Sandbox Code Playgroud)

其班级Coord如下:

class Coord
{
    public string Segment { get; set; }
    public double startX { get; set; }
    public double startY { get; set; }
    public double endX { get; set; }
    public double endY { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

它有大约12000 string Segment的.我的词典Keys是其中一些细分市场.现在我需要将我的字典中的段与那些中的坐标值连接起来List.

起初我使用了使用方法并通过foreach每个字典键将其与列表段进行比较以找到匹配项.然后我了解到LINQ可以使用SQL的内部关节来做同样的事情.

问题:

  1. 查找词典键和某些列表项之间匹配的最佳方法是什么?
  2. 一旦我这样做,我怎么把它全部放到另一个包含匹配segment及其相应startX, startY, endX, endY值作为列表项的列表中.

如果已经提出并回答了这样的问题,我会提前道歉; 个人找不到它.

Lal*_*ali 6

这是加入List&Dictionary的方式(你将只获得匹配的Coords)

 List<CoordNew> newlist = listCoord .Join(strDictionary, 
                                 a => a.Segment, //From listCoord
                                 b => b.Key, //From strDictionary
                                 (a, b) => new CoordNew() { 
                                      Segment_dictionaryValue = b.Value
                                      //Other values from list or dictionary
                                 }).ToList();
Run Code Online (Sandbox Code Playgroud)

如果你需要CoordNew的话

class CoordNew
{
    public string Segment { get; set; }
    public string Segment_dictionaryValue { get; set; }
    public double startX { get; set; }
    public double startY { get; set; }
    public double endX { get; set; }
    public double endY { get; set; }
}
Run Code Online (Sandbox Code Playgroud)