And*_*rew 0 c# linq performance
我有一个元组列表,元组中的对象都是相同的类型.在我们进行错误处理之前,需要一个元组列表的数据结构.为了优化错误处理,我想将元组展平为单个列表以允许重复检查:
例如,如果我有List<Tuple<string,string>>()(我的类型更复杂但想法应该成立):
[<"Tom","Dick">, <"Dick","Harry">, <"Bob","John">]
我想最终得到:
["Tom", "Dick", "Harry", "Bob", "John"]
我知道我可以这样做:
List<string> stringList = List<string>();
Foreach(var item in tupleList){
stringList.Add(item.Item1);
stringList.Add(item.Item2);
}
stringList = stringList.Distinct();
Run Code Online (Sandbox Code Playgroud)
但我希望有一种更有效的方式,也许是Linq内置的东西.不能保证重复,但由于错误处理的性能成本,我宁愿只处理一次.
如果您需要不同订单的不同商品 - 请使用HashSet:
HashSet<string> stringList = new HashSet<string>();
foreach(var item in tupleList){
stringList.Add(item.Item1);
stringList.Add(item.Item2);
}
Run Code Online (Sandbox Code Playgroud)
您可以使用LINQ执行类似的代码,但它不会更快(并且可能不会更好看,因为您需要在Tuple大多数操作中转换为可枚举).Aggregate如果你真的在寻找LINQ,你可以试试.