繁体   English   中英

具有嵌套集合的自定义对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM