1
まず、DataGridViewのdatacontextを汎用クラスCompany
から取得した匿名型に割り当てます。DataGridViewに表示するカラム名を取得するには、匿名型を使用することをお勧めします。DataGridView.SelectedItem [0] to GenericType
var companyData = (from c in dataContext.Companies
select new
{
Company =c.CompanyName,
City=c.City.CityName,
});
dataGridView.DataContext = companyData;
ここで、選択した行の値をMouseDoubleClickイベントの時刻に取得します。しかし問題は、匿名タイプをジェネリックタイプの会社に変換できないことです。
void dataGridView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var selectedRow = dataGridView.SelectedItem[0];
// How to convert selectedRow back to Company ?
// Anonymous type have no implementation of AsEnumerable.
}
私はこのような何かしたい:
Company company = selectedRow.Select(c=>new Company
(CompanyName=selectedRow.Company,
CityName=selectedRow.City);
は、事前にありがとうございます。
にDataGridViewRowを変換するしかし、私は、表示目的のために必要なカラム名を取得いけません。私は匿名タイプを使用する目的を述べました。 – Marshal
ハックがありますが、これを行うためのクリーンな方法はないと思います。具体的なクラス(命名用)を作成し、匿名型の代わりにLINQクエリを使用してクラスオブジェクトのリストを作成する必要があります –
なぜオブジェクトを会社に戻す必要がありますか?元の「会社」はどこから来たのですか? – phoog