簡體   English   中英

C#多個鍵到一個值

[英]C# Multiple Keys to one Value

我正在尋找可以將多個鍵映射到單個對象的C#容器。 例如:一個人可以用他的英文名字或他的西班牙名字來引用。 我這樣做是為了不必創建多個字典副本,並且當我從結構中添加/刪除時,我只需要添加/刪除一次。 是否存在這樣的結構?

是的,它存在: Dictionary<TKey, TValue>

沒有理由不能添加具有多個鍵的單個對象實例:

public class Person
{
    public string EnglishName { get; set; }
    public string SpanishName { get; set; }
}

public static class PersonDictExtensions
{
    public static void AddPerson(this IDictionary<string, Person> persons, Person person)
    {
        persons.Add(person.EnglishName, person);
        persons.Add(person.SpanishName, person);
    }

    public static void RemovePerson(this IDictionary<string, Person> persons, Person person)
    {
        foreach (var item in persons.Where(x => object.ReferenceEquals(x.Value, person)).ToList())
        {
            persons.Remove(item.Key);
        }
    }
}

var person = new Person { EnglishName = "Foo", SpanishName = "Bar" };
var dict = new Dictionary<string, Person>();
dict.AddPerson(person);
dict.RemovePerson(person);

我了解EDIT Ups:只有一個添加和刪除嗎? 不知道存在這樣的結構。 也許您可以添加擴展方法來處理這種情況。

我更改了代碼...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM