如何将LINQ查询结果存入自定义的AdjustmentsList类型对象
解决方案:将LINQ查询结果存入自定义的AdjustmentsList类型
我来帮你搞定这个问题!问题的核心是你当前的LINQ查询返回的是匿名类型的List,而不是你自定义的Adjustments对象集合,所以没法直接转换成AdjustmentsList类型。下面给你几种简单的解决办法:
方法1:先生成Adjustments集合,再赋值给AdjustmentsList
首先修改你的LINQ查询,直接创建Adjustments对象而不是匿名类型:
// 先获取Adjustments类型的列表 var adjustmentsItems = (from a in a1 join fx in q on a.CurrencyCodeID equals fx.CurrencyCodeID select new Adjustments { AdjustmentID = a.AdjustmentID, AdjustmentTypeID = a.AdjustmentTypeID }).ToList(); // 实例化AdjustmentsList并赋值items属性 var day0Spot = new AdjustmentsList { items = adjustmentsItems };
方法2:一步到位实例化AdjustmentsList
如果不想分开写,也可以直接在AdjustmentsList的初始化器里完成查询:
var day0Spot = new AdjustmentsList { items = (from a in a1 join fx in q on a.CurrencyCodeID equals fx.CurrencyCodeID select new Adjustments { AdjustmentID = a.AdjustmentID, AdjustmentTypeID = a.AdjustmentTypeID }).ToList() };
方法3:给AdjustmentsList添加构造函数(更优雅的方式)
你可以给AdjustmentsList类加一个接收List<Adjustments>的构造函数,这样后续使用会更方便:
class AdjustmentsList { public List<Adjustments> items = new List<Adjustments>(); // 添加构造函数,直接传入Adjustments列表 public AdjustmentsList(List<Adjustments> adjustments) { items = adjustments; } }
之后使用的时候就可以这样写:
var day0Spot = new AdjustmentsList( (from a in a1 join fx in q on a.CurrencyCodeID equals fx.CurrencyCodeID select new Adjustments { AdjustmentID = a.AdjustmentID, AdjustmentTypeID = a.AdjustmentTypeID }).ToList() );
为什么原来的写法不行?
你之前的查询select new { a.AdjustmentID, a.AdjustmentTypeID }生成的是.NET自动创建的匿名类型,虽然它的属性和Adjustments一样,但本质上是完全不同的类型,所以无法直接赋值给AdjustmentsList的items(它需要的是List<Adjustments>)。所以必须在查询中明确创建Adjustments实例,才能正确存入自定义列表类型。
内容的提问来源于stack exchange,提问作者user1272386
相关产品推荐
相关产品推荐

