具有嵌套集合的自定义对象
本文关键字:自定义 对象 集合 嵌套 | 更新日期: 2023-09-27 17:55:25
我创建了一个对象,该对象在其中一个属性中包含另一个集合。
这是主要对象:
public class MeterPrevReadInfo
{
public int JobMeterID { get; set; }
public string PreviousJobReference { get; set; }
public FuelType MeterFuelType { get; set; }
public List<MeterPrevReadRegInfo> Regs { get; set; }
public DateTime DateMeterRead { get; set; }
}
这是子对象:
public class MeterPrevReadRegInfo
{
public string RegisterID { get; set; }
public string MeterRead { get; set; }
}
我需要将此对象绑定到转发器控件,我想在转发器中显示 DateMeterRead 属性和所有 MeterRead 属性。
使用 Linq 可以做到这一点吗?我可以使用数据库中的 t-sql 查询轻松完成此操作,但我只是认为应该可以在内存中执行此操作,而无需再次访问数据库的开销。
不要混淆 - LINQ
不是数据访问层或 ORM(也许您正在考虑 LINQ-to-SQL,或 LINQ-to-Entities?)
您绝对可以使用 LINQ 查询内存中集合,尽管您的问题似乎与数据库有关。
我可以使用t-sql轻松做到这一点 从数据库中查询,但我只是 认为应该可以做到 这在内存中没有开销 再次访问数据库。
您可以在一个查询中从数据库中检索所有这些数据,然后构造对象。可以使用存储过程、LINQ to-SQL、实体框架或其他工具执行此操作。您应该选择最适合您要求的工具。我希望这只是需求的一小部分,所以退后一步,选择最好的工具,并使用该工具完成这项工作。
确定这是可能的。看起来你想要这样的东西:
List<MeterPrevReadInfo> list = ...;
var result = from item in list
from info in item.Regs
select new {item.DateMeterRead, info.MeterRead};
此查询定义具有所需两个属性的匿名对象列表。
可以使用
Linq Select
扩展方法访问表示所需模型的匿名对象,如下所示:
var readInfo = new MeterPrevReadInfo();
readInfo.Regs.Select(x => new {
x.RegisterID,
x.MeterRead,
readInfo.DateMeterRead
});