gpt4 book ai didi

c# - 具有一些相等键/值的配对列表?

转载 作者:太空宇宙 更新时间:2023-11-03 17:21:29 25 4
gpt4 key购买 nike

我需要一个 Pair 列表,包含“string”、“string”。

尝试过:

Dictionary<string, string> Categories= new Dictionary<string, string>();

但不能添加“700”、“2”和“700”、“3”。我需要一对,我可以在需要时添加所有内容。像一个Vector,可以包含N个Vector(string, string)。我需要哪种结构?很快,因为我需要在 LINQ 中比较它们,之后:

myStructs = from MyObject s in MyObjects
join c in Categories on s.IDCategory.UniqueID equals c.Key
join d in Categories on s.Stars equals d.Value
select s;

最佳答案

尝试 List<Tuple<string, string>> ,或者为了提高可读性,只需创建一个新类型。

如果您需要它在 linq 期间有意义,您可以将元组转换为匿名类型(此处使用 let)以赋予该类型一些合理的属性名称:

var items = new List<Tuple<string, string>>
{
new Tuple<string, string>("Adam", "1"),
new Tuple<string, string>("Adam", "2")
};

var names = from i in items
let person = new { Name = i.Item1, Number = i.Item2 }
select person.Name;

使其在 linq 查询期间更具可读性。

如果该类型被大量使用,我建议使用更好的属性名称创建您自己的类型,以便清晰明了,如 Servy's answer .从长远来看,Tuple<string, int, bool> 远不明显:

class Person
{
public string Name { get; set; }
public int Age { get; set; }
public bool LikesCake { get; set; }
}

元组相等性基于其所有属性与同一类型元组实例的相等性。例如,new Tuple("Adam", "1").Equals(new Tuple("Adam", "1"))将是真实的。

列表也不会停止重复项。如果您需要在所有属性中强制执行唯一性,则 HashSet<Tuple<string, string>>正是您所需要的。

关于c# - 具有一些相等键/值的配对列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11525463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com