私はEntityFrameworkを使用しており、会社ごとに多数の連絡先を持つ会社を返すデータベースに対してクエリを実行しています。
同じ姓名を持つMyContactsをグループ化する2つのシナリオがあります。
結果が保存されている新しいオブジェクトの配列をループすることはできますが、Entity Frameworkを使用しているため、データを複数回ロードする必要があるので時間がかかるため、可能であれば、オブジェクトをそのまま維持することをお勧めします。結果セット。
計画では、結果の配列をループし、MyContactsオブジェクトに変更を加え、オブジェクトをEFリポジトリに更新できます。
最初のシナリオは、連絡先リストを名前でグループ化することですが、新しいクラスデータセットを作成せずにグループ化する方法がわかりません。
2番目のシナリオはもっと複雑です。MyAccountsのリスト(それぞれにMyContactsのリストがあります)があり、すべてのリストのMyContactsを姓名でグループ化して返し、可能であれば元のクラスを返します。
どうもありがとう、クリス。
データアクセスを削除し、以下の簡単な例を作成しました。
class MyAccount
{
public string accountName { get; set; }
public List<MyContact> Contacts { get; set; }
}
class MyContact
{
public string firstname { get; set; }
public string lastname { get; set; }
}
MyContact contactA = new MyContact() { firstname = "Chris", lastname = "b", ID = 100 };
MyContact contactB = new MyContact() { firstname = "Chris", lastname = "b", ID = 101 };
MyContact contactC = new MyContact() { firstname = "Peter", lastname = "Bread", ID = 102 };
MyContact contactD = new MyContact() { firstname = "James", lastname = "apple", ID = 103 };
MyContact contactE = new MyContact() { firstname = "Richard", lastname = "Brian", ID = 104 };
MyContact contactF = new MyContact() { firstname = "James", lastname = "apple", ID = 105 };
List<MyContact> contacts = new List<MyContact>();
contacts.AddRange(new MyContact[] { contactA, contactB, contactC, contactD, contactE, contactF } );
// how do i get a list of items, grouped by same first and lastname?
MyAccount companyA = new MyAccount() { accountName = "CompanyA", Contacts = new List<MyContact>() };
companyA.Contacts.AddRange(new MyContact[] { contactA, contactB, contactC });
MyAccount companyB = new MyAccount() { accountName = "CompanyB", Contacts = new List<MyContact>() };
companyB.Contacts.AddRange(new MyContact[] { contactA, contactB, contactC });
MyAccount companyC = new MyAccount() { accountName = "CompanyB", Contacts = new List<MyContact>() };
companyB.Contacts.AddRange(new MyContact[] { contactA, contactB, contactC, contactD, contactE });
List<MyAccount> companyList = new List<MyAccount>(new MyAccount[] { companyA, companyB, companyC });
// from the companyList, is there any way to get a list of MyContact types grouped by duplicate first and lastname?