あなたの質問はかなり不明確です。もう少し明確にしていただければ、ご質問により適切にお答えできるようになります。
ただし、あなたが望んでいるのは、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>
では、ReportRecords のコレクションである (またはおそらく IQuerable) を取得します。これは、そこから値を抽出しようとするまでは取り込まれません。たとえば、First()、ToList()、Sum() を呼び出します。
First() またはそのようなものを呼び出すまで実際には呼び出されない . Where() を使用してリストを下るまで実行されないフィルタリングなど、実行できる他の操作もあります。
//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