私は、そのオブジェクトの1つとしてネストされたリスト(List-ChildClass)を持つオブジェクトのリスト(List-ParentClass)内のオブジェクトのリストを持っています。 List-ChildClassを設定するには、以下のようにforeachループを使用しました。私はまた、以下のようにlinqクエリをネストしました。foreachループを使用せずにC#のリスト内にリストを挿入します。もっといい方法?
この時点で私はパフォーマンス上の問題を抱えており、これを行うためのよりよい方法があると感じています。
質問:私はこれをより速く/より速く行うことができますか?
注 - これはC#で書かれたWebベースの.net MVCアプリケーションです。私はEFをSQLデータベースに戻します。
public class ParentClass
{
public int pcid { get; set; }
public List<ChildClass> ChildClassList { get; set; }
}
public class ChildClass
{
public int pcid { get; set; }
public int ccid { get; set; }
}
public class DoWork
{
public void ExampleMethodForEach()
{
List<ParentClass> ParentClassList = new List<ParentClass>();
foreach(ParentClass a in ParentClassList)
{
a.ChildClassList = EFDatabase2.where(b => b.pcid == a.pcid).select(b => b.ccid).ToList();
}
}
public void ExampleMethodLinq()
{
var ParentClassList = (from a in EFDatabase
select new ParentClass
{
ccid = a.ccid,
pcid = (from b in EFDatabase2
where b.pcid == a.pcid
select b.ccid).ToList()
//something like this were I nest a query
}).ToList();
}
}
* database *のパフォーマンスに問題がある場合は、 'list'、' foreach'などではなく、* database *に責任があります。最終的なクエリは何ですか?クエリが取得するレコードの数リスト内の*リストの場合は、できるだけ少数の呼び出しを行います。*すべてのデータを* 1で取得してから、必要な構造に整理できますか? –
私がforeachで見つけたのは、データベースに当たる回数が問題を引き起こしていた可能性があるということでした。私の現在のアプリでは、データをメモリにプルしてから、foreachループを実行しています。これはうまくいくが、ちょっと重たく感じるようだ。私はすべてが1つの大きな質問で完了できると思っています。 – KungFuMaster
レコードの量はそれほど多くなく、我々は数千または二に戻っていますが、それぞれが3〜10倍多くのレコードを含む複数のリストを持っています。また、これを引き出すためのクエリは少し複雑です。だから私の状況の詳細には、それはおそらく非常に簡単ではありません。質問:上記の方法は、この状況を解決するための通常の方法であると思いますか? – KungFuMaster