LINQ从每条记录中获取两条记录
我有一个此类对象的列表:LINQ从每条记录中获取两条记录,linq,Linq,我有一个此类对象的列表: MyObject .StartDate .EndDate .Number 对于每个对象,我要返回两个对象: NewObject .Date .Number 其中一个对象中的日期为EndDate和Number。 另一个对象日期将是StartDate,数字将是负数是新对象类还是匿名类型?相同的想法,但速度更快+1@newStackExchangeInstance它是O(2n)。就像你的一样。Concat也必须对它进行迭代。@newStackExcha
MyObject
.StartDate
.EndDate
.Number
对于每个对象,我要返回两个对象:
NewObject
.Date
.Number
其中一个对象中的日期为EndDate和Number。
另一个对象日期将是StartDate,数字将是负数是
新对象
类还是匿名类型?相同的想法,但速度更快+1@newStackExchangeInstance它是O(2n)。就像你的一样。Concat也必须对它进行迭代。@newStackExchangeInstance我的是O(2*n),你的是O(n*2)!我们做的完全一样,但顺序不同。塞德里克,让我看看。在MyObject上迭代两次。O(2n)。然后,Concat还需要遍历这两个部分。O(4n)。比我想象的还要高!
var result = (from myObject in MyObjects
select new NewObject { Date = myObject.StartDate, Number = -myObject.number }).Concat
(from myObject in MyObjects
select new NewObject { Date = myObject.EndDate, Number = myObject.number });
MyObjects.SelectMany(o => new[] {
new NewObject { Date = o.EndDate, Number = o.Number },
new NewObject { Date = o.StartDate, Number = -o.Number } } );
var q = from o in MyObjects
select new {
NewObject1 = new NewObject(){
Date = o.StartDate,
Number = -o.Number
},
NewObject2 = new NewObject(){
Date = o.EndDate,
Number = o.Number
}
};