我创建了一个对象,其中包含其中一个属性中的另一个集合。
这是主要对象:
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查询轻松地完成它,但我只是认为应该可以在内存中执行此操作,而无需再次访问数据库的开销。
答案 0 :(得分:1)
不要感到困惑 - LINQ不是数据访问层或ORM(也许您正在考虑LINQ-to-SQL或LINQ-to-Entities?)
您可以使用LINQ绝对查询内存中的集合,尽管您的问题似乎与数据库有关。
我可以使用t-sql轻松完成 从数据库查询,但我只是 认为应该可以做到 这在内存中没有开销 另一次访问数据库。
您可以在一个查询中检索数据库中的所有这些数据。然后构造对象。您可以使用存储过程,LINQ-to-SQL,实体框架或其他工具执行此操作。您应该选择最适合您要求的工具。我希望这只是要求的一小部分,所以退一步,选择最好的工具,并使用该工具使其工作。
答案 1 :(得分:0)
List<MeterPrevReadInfo> list = ...;
var result = from item in list
from info in item.Regs
select new {item.DateMeterRead, info.MeterRead};
此查询定义了具有所需两个属性的匿名对象列表。
答案 2 :(得分:0)
您可以使用Linq Select
扩展方法访问表示所需模型的匿名对象,如下所示:
var readInfo = new MeterPrevReadInfo();
readInfo.Regs.Select(x => new {
x.RegisterID,
x.MeterRead,
readInfo.DateMeterRead
});