C# 如何从列表中为一个元素获取具有公共值的条目<;KeyValuePair<;字符串,字符串>>;?
假设我有一个C# 如何从列表中为一个元素获取具有公共值的条目<;KeyValuePair<;字符串,字符串>>;?,c#,entity-framework,dictionary,C#,Entity Framework,Dictionary,假设我有一个列表对象,其中的以下条目表示狗的名字和它们出生时的不同品种标记: Name BreedMarkers Spot PUG Spot PITBULL Spot BASSETT Rover DACHSHUND Meat PUG Meat ROTTWEILER 我只想获取共享公共Br
列表
对象,其中的以下条目表示狗的名字和它们出生时的不同品种标记:
Name BreedMarkers
Spot PUG
Spot PITBULL
Spot BASSETT
Rover DACHSHUND
Meat PUG
Meat ROTTWEILER
我只想获取共享公共BreedMarkers
的字符串对。例如,由于Spot
和Meat
都有PUG
的共同标记,因此我想缩减字典,以便删除除这些对之外的任何东西。最终结果应该是:
Name (Key) BreedMarkers (Value)
Spot PUG
Meat PUG
到目前为止,我已经尝试输出元素来分离列表
对象,然后尝试在它们之间进行连接
,但这是并且我希望有一种更优雅的方法 将创建一个新的ILookup
(类似于IDictionary
,但每个键有多个值),其中值将成为键,反之亦然:
myNewDict = myOldList.ToLookup(x => x.Value, x => x.Key);
var results = myNewDict["PUG"]; // Spot, Meat
或者只是:
var results = myOldList.Where(x => x.Value == "PUG").Select(x => x.Key);
如果您计划查找多个值,
ToLookup
更好;否则,其中
是好的。字典中怎么能有重复的键?字典中不能有重复的键。字典中怎么能有重复的键???那么使用字典有什么意义呢?@JonHanna我是在这个问题的背景下问的。对不起,我的错,我已经在字符串数组而不是字典的背景下进行了相应的编辑。他们最好使用列表、元组或对,或者使用相反的模式进行查找,取决于他们通常实际想做什么。@Tim S.谢谢你的回答,但我匆忙忘记了字典键必须是唯一的,我在类似哈希表的对象的上下文中编辑了这个问题。@Tim S.根据你的建议,我有以下内容:var commonMarkers=namesMarkers.ToLookup(nm=>nm.Key,nm=>nm.Value)
其中,名称制定者
是一个列表
。我想这就可以了。@Darthcontentent我已经稍微更新了我的答案。碰巧,我只是把你的字典当作一个IEnumerable
来使用,它也可以与你的列表
一起使用。我想你想在lo中反转你的键
/值
okup(就像我有的一样),这样你就可以通过BreedMarkers
,而不是Name
。是的,现在问题更清楚了,更清楚了,这就是方法。你可能还希望.ToLookup(x=>x.Value)
在查找中保留原始的完整对。(或对于使用其中
省略的表单,选择
)。