你的问题比较不清楚。如果您稍微澄清一下,那么我们将能够更好地回答您的问题。
但是,我认为您想要的是一个ReportRecord
填充了来自Histories
.
var rep = Histories.Select(rec => new ReportRecord()
{
ProductName = rec.Name,
Total = rec.AdvanceTotal,
BidTotal = rec.LiveTotal
}).First();
这将从 中获取第一条记录Histories
,然后ReportRecord
使用该行值填充一个新记录。
var
是占位符类型。它可以是任何东西。编译器计算出它应该是什么。但是,如果您知道它是什么,我个人觉得如果您指定类型会更清楚。像这样:
ReportRecord rep = Histories.Select(rec => new ReportRecord()
{
ProductName = rec.Name,
Total = rec.AdvanceTotal,
BidTotal = rec.LiveTotal
}).First();
我给出的解决方案将为您提供第一行,Histories
如果您想要最后一行,那么您将替换.First();
为.Last();
更多信息:
在您的原始代码示例中,您会得到一个IEnumerable<ReportRecord>
(或者可能是 IQuerable)这是 ReportRecords 的集合,在您尝试从中提取值之前不会填充它。例如通过调用 First()、ToList()、Sum()。
您还可以执行其他操作,例如过滤,直到使用 .Where() 在列表下方才会运行,直到您调用 First() 或类似的东西才会实际调用,例如,
//Get the first record from Histories where the product name is "Magic beans" and populate a new ReportRecord with those values
ReportRecord rep = Histories.Select(rec => new ReportRecord()
{
ProductName = rec.Name,
Total = rec.AdvanceTotal,
BidTotal = rec.LiveTotal
}).Where(w => w.Name == "magic beans")
.First();
以下是其他 LINQ 扩展方法的一些示例http://www.nilzorblog.com/2013/05/101-linq-samples-lambda-style.html