[英]Custom object with nested collection
我创建了一个在其中一个属性中包含另一个集合的对象。
这是主要对象:
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
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.