LINQ結果をフォームのコントロールにバインドする関数があります。以下のコードは動作しますが、私はコピー/貼り付けの面で叩かれるべきであるという気持ちを乗り越えることはできません。誰かが私がこれを脱臭するために必要なもので私を助けることができますか?コントロールをLINQにバインドするリファクタリングメソッド
ありがとうございました!その後、
IQueryable<string> GetDescriptions(int cat)
{
return from x in caseNotesItems
where x.CategoryID == cat
select x.ItemDescription;
}
そして:
private void BindDataToForm()
{
// Bind data to form
CaseNotesDataContext db = new CaseNotesDataContext();
Table<CN_MaintItem> caseNotesItems = db.GetTable<CN_MaintItem>();
// For each object
var contactType = from cType in caseNotesItems
where cType.CategoryID == 2
select cType.ItemDescription;
chkContactType.DataSource = contactType;
var contactLocation = from cLocation in caseNotesItems
where cLocation.CategoryID == 3
select cLocation.ItemDescription;
lkuContactLocation.Properties.DataSource = contactLocation;
var contactMethod = from cMethod in caseNotesItems
where cMethod.CategoryID == 4
select cMethod.ItemDescription;
lkuContactMethod.Properties.DataSource = contactMethod;
var contactWith = from cWith in caseNotesItems
where cWith.CategoryID == 5
select cWith.ItemDescription;
chkContactWith.DataSource = contactWith;
var domains = from d in caseNotesItems
where d.CategoryID == 6
select d.ItemDescription;
chkDomains.DataSource = domains;
}
ありがとう、これは正しい軌道にあるようだ。私の趣味は「これ」です。 "拡張メソッドは、非ジェネリックでネストされていない静的クラスでのみ宣言できます" アイデア? –
静的クラスで宣言する必要があります。 public static class MyExtensions {(ここに置く)} –