mar*_*zzz 1 c# linq data-structures
我需要一个Pair列表,"string","string".
试过:
Dictionary<string, string> Categories= new Dictionary<string, string>();
Run Code Online (Sandbox Code Playgroud)
但不能添加"700","2"和"700","3".我需要一个配对,我可以随时添加所有东西.像一个可以包含N Vector(字符串,字符串)的Vector.我需要哪种结构?很快,因为我需要在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;
Run Code Online (Sandbox Code Playgroud)
尝试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;
Run Code Online (Sandbox Code Playgroud)
在linq查询期间使其更具可读性.
它的类型使用了很多,我建议创建自己的类型,使用更好的属性名称,以便在Servy的答案中清晰.从长远来看,Tuple<string, int, bool>是少了很多比明显:
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public bool LikesCake { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
元组相等性基于所有属性与相同类型元组的实例的相等性.例如,new Tuple("Adam", "1").Equals(new Tuple("Adam", "1"))将是真的.
列表也不会停止重复的项目.如果您需要在所有属性中强制执行唯一性,那么HashSet<Tuple<string, string>>您就需要.
| 归档时间: |
|
| 查看次数: |
235 次 |
| 最近记录: |