我正在使用名为 CustomizedGrid 的UserControl
,其中包含DataGridView
和几个标签,用于显示有关行的信息。
首先,我选择Linq To Sql
作为与SQL交谈的基础技术,所以无论我说什么或问什么都在Linq To Sql
框架中。
约束#1 :我需要 CustomizedGrid 才能处理不同表格的数据源。
例如,我有一个用户表和一个客户表,我希望将一个表单中的用户传递给网格,而在另一个表单中, 客户。
约束#2 :我需要存储数据源的阴影,以便能够执行本地搜索。
例如,我在网格中加载了所有客户,然后我想搜索名称中包含“Mahdi”的客户,在我过滤“Mahdi”后,我希望再次看到所有客户。所以我想从数据库中获取客户,将其加载到我的主数据源以及 Shadow DataSource ,我在中过滤数据Shadow DataSource ,但主要数据仍保留在主数据源中,我可以再次加载主数据源,而无需从数据库中提取冗余数据。
我的问题:
哪种数据类型可以为我提供最好的服务?我不能使用通用列表,因为我不知道将托管哪个表,我不能使用IQueryable因为我不知道如何在以后投射它以便我可以搜索特定的字段。
我的信息缺乏此内容,您的答案实际上会受到欢迎。
答案 0 :(得分:0)
你可能会这样:
约束1。您可以使用Join从不同的表中获取数据。
例如。 SELECT U.ID,U.NAME, C.NAME AS CUSTOMERNAME, C.DOB FROM USER U INNER JOIN CUSTOMER C ON U.ID = C.USERID
使用此查询填充DataTable,如adp.fill(datatable,query);
将此数据表绑定到您自定义的Datagridview,如customDataGridView1.DataSource = datatable;
Contraint 2。要过滤数据网格视图中的数据,您可以使用以下内容:
((DataTable)DataGridViews.DataSource).DefaultView.RowFilter =colmNameHere " like '%" + filterTextHere + "%'";
使用Linq加入
var query = from c in customers
join o in orders on c.ID equals o.ID
select new { c.Name, o.Product };