Recon
リストからアイテムをフィルタリングしたい。リストに「13」に等しいプロパティRecon
を持つオブジェクトを持つすべてのオブジェクトを取得したいと考えています。Transaction
SrcObjType
Transactions
// The model is like this
public partial class Recon
{
public int ReconNum { get; set; }
public virtual ICollection<Transaction> Transactions { get; set; }
}
public partial class Transaction
{
public long TransactionId { get; set; }
public Nullable<System.DateTime> DocumentDate { get; set; }
public string SrcObjTyp { get; set; }
public virtual Recon Recon { get; set; }
}
// this works for a few items but crashes on large data sets (million rows large)
List<Recon> reconsWithType13Trans = new List<Recon>();
db.Transactions.Where(t => t.SrcObjTyp == "13")
.ToList().ForEach(t => reconsWithType13Trans.Add(t.Recon));
foreach が大量のメモリを消費していると、プログラムがメモリ不足の例外を発生させると思います。
私の質問は、これらのアイテムをできるだけ効率的にフィルタリングするにはどうすればよいかということです。可能であれば、多くのメモリを必要とせずに。この種のフィルタリングを実現するために foreach を使用しない別の可能性はありますか?