我有一个类似于以下内容的LINQ查询(为了简洁起见,删除了过滤器等)
var orderLines =
from line in lines
select new OrderLine {
Prop1 = line[0],
Prop2 = line[1],
// ... possibly 1-3 more properties are initialized
};
非常简单,有用的对象初始化器语法使一切都清晰。不幸的是我需要更改OrderLine类的构造(包括对它所属的顺序的引用),所以我将默认构造函数设为private并公开了工厂方法。我无法弄清楚如何使用LINQ查询语法调整我的查询,所以我切换到方法语法:
var orderLines =
lines.Select(line => {
var orderLine = Order.CreateOrderLine();
orderLine.Prop1 = line[0];
orderLine.Prop2 = line[1];
return orderLine;
});
在这种情况下是否可以使用查询语法?如果是这样,那怎么样?提前谢谢。
答案 0 :(得分:0)
您可以将Order.CreateOrderLine
方法的签名更改为以下内容:
//change object for type of Props
public static Order CreateOrderLine(object prop1, object prop2)
{
//make assignments here
}
答案 1 :(得分:-1)
以下内容如何:
var orderLines = from line in lines
let orderLine = Order.CreateOrderLine()
select new {
Prop1 = line[0],
Prop2 = line[1],
};