タイトルが泥だと分かりますので、例を捨てて誰かが正しい方向に向けることができるかどうか確認してください。Linqを使って行う方法:オブジェクトリスト内のすべてのリストのリストをコンパイルする
public class topObj
{
public List<midObj> Mids { get; set; }
public List<botObj> Bots { get { // do some LINQ magic here } }
}
public class midObj
{
public List<botObj> Bots { get; set; }
}
public class botObj
{
}
トップオブジェクトから、リスト<>のトップオブジェクトからの中間オブジェクトのリスト<>にあるすべてのボトムオブジェクトのリストを取得しようとしています。
public List<botObj> Bots
{
get
{
List<botObj> lst = new List<botObj>();
foreach (midObj mo in Mids)
{
lst.AddRange(mo.Bots);
}
return lst;
}
}
それはもちろん、動作しますが、私はLINQが少ないラインでこれを行うための方法がありますと仮定しなければなりません:
今私はこのようなものを持っています。
Entity Frameworkに適用すると、IENumerableはListよりもはるかに優れていますが、EF以外では多くの違いがありますか?私はこれを複数の他の開発者が使用する場所に構築していますので、リストを使用して簡単にリストを使用し、IENumerableを使用して唯一の理由はEHベースです...私たちは使用しません。 – cavillac
EFはIEnumerableをまったく使用せず、IQueryableを使用しますが、2つのメソッドがほとんど同じですが、実際の動作は大きく異なります。 IEnumerablesは、メモリオブジェクトを扱う際にはまだ非常に便利です。アイデアには、インメモリコレクションのクエリがあります。後で、そのクエリの結果を列挙することはできますが、クエリはその時点まで実行されません。実際にListが必要な場合は、結果に 'ToList'をいつでも呼び出すことができますので、IEnumerableを返す何かを失うことはありません。 – Servy