gpt4 book ai didi

c# - 如何使用 C# 对象过滤数据网格

转载 作者:行者123 更新时间:2023-12-02 05:21:57 25 4
gpt4 key购买 nike

我有一个充满对象的 DataGridView,现在我想要一个用于此 DataGrid 的搜索/过滤功能。我正在尝试使用一个文本框,您可以在其中输入文本字符串,并且在我的脑海中想要将此字符串与所有对象字段匹配(例如,如果对象是电子邮件,我想将字符串与主题字段匹配)在数据网格。

如果有任何帮助,DataGrid.DataSource 声明如下(不要担心方法,问题是过滤器/搜索功能):

var newMess = LM.GetNewMessages();
if (newMess.Count > 0)
{
for (int i = 0; i < newMess.Count; i++)
{
LM.InboxTemp.Insert(0, newMess[i]);
}
}
BindingSource source = new BindingSource();
source.DataSource = LM.InboxTemp; //List with Objects
dgNewMess.DataSource = source;
dgNewMess.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dgNewMess.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dgNewMess.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dgNewMess.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

最佳答案

如果你想过滤电子邮件集合,你可以使用 Linq。您也可以使用 ForEach List<Email>的方法|将新过滤的电子邮件插入您的 InboxTemp列表:

string filter = txtFilter.Text;
LM.GetNewMessages()
.Where(msg => msg.Subject.Contains(filter))
.ToList()
.ForEach(msg => LM.InboxTemp.Insert(0, msg));

更新 Equin.ApplicationFramework.BindingListView你可以这样分配数据源

dgNewMess.DataSource = new BindingListView<Email>(LM.InboxTemp);

然后应用过滤器

string filter = txtFilter.Text;
BindingListView<Email> emails = (BindingListView<Email>)dgNewMess.DataSource;
emails.Filter = new PredicateItemFilter<Email>(msg => msg.Subject.Contains(filter));

关于c# - 如何使用 C# 对象过滤数据网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13699672/

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