我正在并行处理复杂查询。从被调用的方法中我得到了很多Tuple<IEnumerable<Object>, int>
个对象。我想快速聚合它们,但可能.Aggregate(下面的代码)不是最好的选择。什么是正确的方法?
public static Tuple<IEnumerable<Object>, int> Parse(Object obj)
{
var ieo = new List<Object>();
var x = 5;
return new Tuple<IEnumerable<Object>, int>(ieo, x);
}
public static void Query(List<Object> obj)
{
var result = obj
.AsParallel()
.Select(o => Parse(o))
. // do something to aggregate this quickly and get a tuple of:
// - flattened IEnumerable<Object>
// - summed up all second items
}
我的总体建议,可能非常缓慢,看起来非常糟糕。但是有效。
.Aggregate((t1, t2) => new Tuple<IEnumerable<Object>, int>(t1.Item1.Concat(t2.Item1), t1.Item2 + t2.Item2));
答案 0 :(得分:1)
你可以写自定义修补器。
var personCal = new PersonCalender({salary: 138});
var PersonCalendar = React.createClass({
componentDidMount: function() {
this.setState({
computedSalary: this.calculatedSalary(this.props.salary)
});
},
render: function() {
... use this.state.computedSalary
}
});
以后你可以使用它:
public static Tuple<IEnumerable<T>, int> MagicFlatten<T>(
this IEnumerable<Tuple<IEnumerable<T>, int>> tupleCrap)
{
var item1 = tupleCrap.SelectMany(x => x.Item1);
var item2 = tupleCrap.Sum(x => x.Item2);
return new Tuple<...>(item1, item2);
}