6
DataGridViewに匿名型を返すLINQクエリを実装しました。DataGridVIewに匿名型が設定されています。どのようにフィルタリングするのですか?
質問:データソースが実際に匿名であるDataGridViewをフィルタリングする機会はありますか?
// Setting the datagridview data source
rawDocumentsDataGridView.DataSource = rawTopics
.SelectMany(t => t.Documents)
.Select(d => new
{
DocumentId = d.Id,
Rilevante = d.IsRelevant,
TopicId = d.Topic.Id // foreign key
}).ToList();
// Make it not visibile, waiting for master change
rawDocumentsDataGridView.Visible = false;
// When master selection changed...
void rawTopicsDataGridView_SelectionChanged(object sender, System.EventArgs e)
{
if (rawTopicsDataGridView.CurrentRow == null) return;
// Get selected topic id
int tid = (int) rawTopicsDataGridView.CurrentRow.Cells["TopicId"].Value;
// Filter rawDocumentsDataGridView based on topic id
// WARNING: PSEUDO CODE
var oldDataSource = (List<AnonymousType>)rawDocumentsDataGridView.DataSource;
rawDocumentsDataGridView.DataSource = oldDataSource
.Where(d => d.TopicId == tid);
}
:B
、再利用のためのフィールドでリストを格納と既にフィルタリングされたデータをフィルタリングしようとしていた。そのとおり。でも、匿名のやり方をどうにかして知りたいのですが...。 – gremo@Gremo - キャストバイトリックはありますが、それほど価値がありません。真剣に。ここでは匿名型は使用しないでください。データが同じコンテキストで生成され、消費されるときにのみ意味を持ちます(またはリフレクションのようなものでのみ*使用されます)。これはここでは当てはまりません。また、反射を介してフィルタリングを行うこともできますが、遅くて脆いです。 –
いいえ、フィールドを公開します。私は反射についてあなたに同意します...それは価値がありません... – gremo