将一个列表转换为另一个列表类型
本文关键字:列表 转换 另一个 类型 一个 | 更新日期: 2023-09-27 18:30:58
我在下面做这个 - 有更好的方法吗? 在不创建新对象的情况下将一个列表转换为另一个列表?
DataContext c = new DataContext();
List<X> x=
context.X.Where(a => a.date>Datetime.Now>).ToList();
foreach(var a in x)
{
Y y= new Y();
y.Name= a.Name;
c.Ys.InsertOnSubmit(y);
}
c.SubmitChanges();
你可以试试:
var ys = context.X
.Where(x => x.date > DateTime.Now)
.Select(x => new Y { Name = x.Name });
c.Ys.InsertAllOnSubmit(ys);
不确定缩短多少会让它变得更好。也许这会有所帮助:
您可以投影到Y
列表中,因此您不必在循环中创建新的Y
。
List<Y> list_of_ys =
context.X.Where(a => a.date>Datetime.Now)
.Select(s => new Y(){Name=s.Name})
.ToList()
foreach(var y in list_of_ys)
{
c.Ys.InsertOnSubmit(y);
}
public IList<IPoint> Points
{
get
{
return points.ConvertAll<IPoint>(
delegate(RandomPoint point)
{
return point;
});
}
}
例如,如果您有一个接口及其实现,则可以使用 ConvertAll 方法,如上例所示,其中 IPoint 是一个接口,RandomPoint 是从该接口派生的类。