Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从列表中为一个元素获取具有公共值的条目<;KeyValuePair<;字符串,字符串>>;?_C#_Entity Framework_Dictionary - Fatal编程技术网

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)
在查找中保留原始的完整对。(或对于使用
其中
省略
的表单,选择
)。