所以我有一个Dictionary
字符串值为Keys。我有一个班级列表:
listCoord = new List<Coord>();
其班级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; }
}
它有大约12000 string Segment
个。我的词典Keys
属于其中一些细分市场。现在我需要使用List
中的坐标值加入我的词典中的片段。
首先,我选择了使用foreach
的方法,然后通过每个字典键将其与列表段进行比较以找到匹配项。然后我了解到LINQ可以使用SQL的内部关节来做同样的事情。
问题:
segment
及其对应的startX, startY, endX, endY
值作为列表项的另一个列表中。?如果已经提出并回答了这样的问题,我会提前道歉;个人找不到。
答案 0 :(得分:6)
这是加入List&amp; amp;字典(你只会得到匹配的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();
如果您需要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; }
}
答案 1 :(得分:3)
你也可以试试这个
var listCoord = new List<Coord>();
Dictionary<String, string> dict = new Dictionary<string, string>();
dict.Add("A", "Myvalues");
listCoord.Add(new Coord
{
Segment = "A",
});
listCoord.Add(new Coord
{
Segment = "B",
});
listCoord.Add(new Coord
{
Segment = "C",
});
List<Coord> result = listCoord.Where(cords => dict.ContainsKey(cords.Segment))
.ToList();
提供的样本工作根据您的要求使用
ContainsKey
和/或ContainsValues
。
感谢捕获@Yacoub Massad