gpt4 book ai didi

c# - DataGridVIew填充了匿名类型,如何过滤?

转载 作者:太空狗 更新时间:2023-10-29 21:30:42 25 4
gpt4 key购买 nike

我用返回匿名类型的 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);
}

最佳答案

如果您继续这样做(释义)“DataSource = DataSource.Where(...)”,您将在内部 重复过滤过滤数据;但在这种情况下我会:

a:将列表存储在字段中以供重复使用,

b: 不是我们匿名类型

class DocumentRow {
public int DocumentId {get;set;}
public bool Rilevante {get;set;}
public int TopicId {get;set;}
}
...
List<DocumentRow> allData;
...
allData = rawTopics.SelectMany(t => t.Documents)
.Select(d => new DocumentRow
{
DocumentId = d.Id,
Rilevante = d.IsRelevant,
TopicId = d.Topic.Id // foreign key
}).ToList();
...
rawDocumentsDataGridView.DataSource = allData
.Where(d => d.TopicId == tid).ToList();

关于c# - DataGridVIew填充了匿名类型,如何过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4321778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com