我必须在绑定列表绑定的网格中显示数据
BindingList<ExecutionSummaryData> ExecutionList
grid.DataSource = ExecutionList;
其中ExecutionSummaryData
包含Name, Age, Address
等属性(例如)。
当用户选择某些名称,年龄或其他参数时,现在要通过Winform进行操作,我必须从ExecutionList
中选择数据,并且必须将过滤后的数据绑定到我的网格中。
我可以以某种方式将此查询绑定到ExecutionList
以便每次更改查询字符串ExecutionList
都将绑定到网格并显示过滤的数据吗?
我可以将通过过滤器字符串从ExecutionList
检索到的任何子列表绑定到我的网格,对于每个过滤器查询更改,它将从ExecutionList
获取数据并相应显示。
ExecutionList
,因为此网格将实时更新约10-20百万条记录。请建议在此ExecutionList
上使用Linq查询或Lambda表达式的语法是什么,以获取过滤的记录。
过滤器查询将包括具有多个实体的条件以进行比较并从列表中获取
就像“
从
ExecutionList
中选择*,其中name in('N1','N2','N3',,,'N90')“ ('A1','A2','A3',,,'A90')中的AND年龄
请提出建议,因为我该如何实现?根据回复,我将使用缺少/所需的信息来更新我的问题。
谢谢,
灰烬
答案 0 :(得分:0)
使用分页创建存储过程,并通过搜索过滤器并检索几千个日期。或者,您可以 IQueryable ,这样将根据您的过滤器触发查询并检索数据。 “这是评论,而不是答案。”
答案 1 :(得分:0)
如果您想从DataTable中过滤数据,我建议您使用DataView
DataView dv = new DataView();
dv = new DataView(parameterDs.Tables[0], "ParameterName = '@" + parameter.Key + "'",string.Empty, DataViewRowState.CurrentRows);
您还可以在DataView上使用排序
dv.Sort = "Name";
然后使用
grid.DataSource = dv;
使用DataView的另一种方法是通过如下向其分配查询:
DataTable contacts = dataSet.Tables["Contact"];
EnumerableRowCollection<DataRow> query = from contact in contacts.AsEnumerable()
where contact.Field<string>("LastName").StartsWith("S")
orderby contact.Field<string>("LastName"), contact.Field<string>("FirstName")
select contact;
DataView view = query.AsDataView();
bindingSource1.DataSource = view;
dataGridView1.AutoResizeColumns();
或通过使用DataView'RowFilter'属性:
DataTable contacts = dataSet.Tables["Contact"];
DataView view = contacts.AsDataView();
view.RowFilter = "LastName='Zhu'";
bindingSource1.DataSource = view;
dataGridView1.AutoResizeColumns();
,只要您想清除过滤器,只需写:
view.RowFilter = null; //or String.Empty