メンテナンスを実行しようとしているドロップダウンリスト内で使用するために、特定のクラスインスタンスの特定の要素を取得する方法を見つけようとしています。目標は、すべての連絡先を選択してキー/値ペアの文字列配列に割り当て(連絡先は会社の関連エンティティ、具体的には1:nの関係-1つの会社には複数の連絡先があります)、最初の連絡先の姓名属性を選択することですブールクラス属性PrimaryがTrueに設定されているシーケンスから外れています。
public class Company
{
public string Name { get; set; }
public virtual ICollection<Contact> Contacts { get; set; }
}
public class Contact
{
public string FirstName { get; set; }
public string LastName { get; set; }
public bool IsPrimary { get; set; }
}
次のコード:
private Company CreateViewModel(Company company)
{
var contacts = _contactService.CompanyContacts(company);
}
public Dictionary<string, string> CompanyContacts(Company company)
{
var results = new Dictionary<string, string>();
foreach (var contact in company.Contacts)
{
var key = string.Format("{0} {1}|{2}", contact.FirstName, contact.LastName, contact.IsPrimary());
var val = string.Format("{0} {1}|{2}", contact.FirstName, contact.LastName, contact.IsPrimary());
if (results.ContainsKey(key)) continue;
results.Add(key, val);
}
return results;
}
public void InitContactList(Dictionary<string, string> contacts)
{
var firstOrDefault = contacts
.Where(x => x.Key.Contains("true"))
.Select(x => x.Value)
.FirstOrDefault();
var selectedContact = contacts.FirstOrDefault().Value;
if (firstOrDefault != null)
{
var selectedContact = firstOrDefault;
ContactList = new SelectList(contacts, "Key", "Value")
.SelectByText(selectedContact.ToString()).ToList();
}
ContactList = new SelectList(contacts, "Key", "Value")
.SelectByText(selectedContact.ToString()).ToList();
}
ただし、デフォルトでは、選択リストに最初の「プライマリ」連絡先は表示されません。最初のisPrimary=1連絡先を選択リストの最初の選択にします。InitContactListのfirstOrDefault変数は、キーに.contains( "true")以外の何かを実行させる必要があると確信しています。助けていただければ幸いです。前もって感謝します。