8,497
社区成员
发帖
与我相关
我的任务
分享
public class A
{
public int tick;
public double value;
}
List<A> dat1;
List<A> dat2;
dat1.Add(new A(){tick=1,value=2));
dat1.Add(new A(){tick=2,value=5));
dat2.Add(new A(){tick=2,value=4));
dat2.Add(new A(){tick=3,value=8));
希望用linq,将dat1中,tick和dat2中同样的对象,修改value为dat2对应对象的value.
dat1.Join(dat2, d1 => d1.tick, d2 => d2.tick, (d1, d2) => new { d = d1, value = d2.value }).ToList().ForEach(r => r.d.value = r.value);
dat1.ForEach(d =>
{
int temp = d.tick;
A a;
if ((a = dat1.Join(dat2, d1 => d1.tick, d2 => d2.tick, (d1, d2) => new A { tick = d1.tick, value = d2.value }).FirstOrDefault(t => t.tick == temp)) != null)
{ d.value = a.value; }
});
//更正一下:
void Main()
{
List<A> dat1=new List<A>();
List<A> dat2=new List<A>();;
dat1.Add(new A(){tick=1,value=2});
dat1.Add(new A(){tick=2,value=5});
dat2.Add(new A(){tick=2,value=4});
dat2.Add(new A(){tick=3,value=8});
dat1=(from t1 in dat1
join t2 in dat2
on t1.tick equals t2.tick into g
from t2 in g.DefaultIfEmpty()
select new A
{
tick=t1.tick,
value=t2==null?t1.value:t2.value
}).ToList();
}
public class A
{
public int tick;
public double value;
}
void Main()
{
List<A> dat1=new List<A>();
List<A> dat2=new List<A>();;
dat1.Add(new A(){tick=1,value=2});
dat1.Add(new A(){tick=2,value=5});
dat2.Add(new A(){tick=2,value=4});
dat2.Add(new A(){tick=3,value=8});
var query=from t1 in dat1
join t2 in dat2
on t1.tick equals t2.tick
select new A
{
tick=t1.tick,
value=t2.value
};
dat1=query.ToList();
}
public class A
{
public int tick;
public double value;
}
111
dat1.Where(d=>dat2.Any(d2=>d2.tick==d.tick)).ToList().ForEach(dt=>dt.value = dat2.Find(d3=>d3.tick==dt.tick).value);
我自己这样肯定写的不好。
foreach (var value in dat1.Concat(dat2).GroupBy(value => value.tick)) value.First().value = value.Last().value;