【发布时间】:2014-01-28 06:47:04
【问题描述】:
我在我的项目中使用 linq to sql。在 Form1 我查询如下表:
var dc = new Data.MyDataContext();
var query = from c in dc.Customers select c;
program.MainForm.query = query;
或者在 Form2 中查询如下表格:
var dc = new Data.MyDataContext();
var query = from b in dc.Banks select b;
program.MainForm.query = query;
我想稍后在 MainForm 中执行以下操作:
this.DataGridView1.DataSource = this.query.Where(item=>item.ID < 10);
我不知道如何存储对象。我尝试将它存储为 IQueryable,但我无法查询它,因为它是一个接口。
我想在查询中存储来自不同表的结果,这样做的简单方法是什么?我认为泛型可以提供帮助,但我不知道如何。
【问题讨论】:
-
您正在混合 UI 和数据访问。这会给你带来什么好处?
-
@SergeyBerezovskiy 我们正在尝试编写一个可以处理任何表格结果的自定义控件,并且我们想在自定义控件中进行操作,例如我们想在类中搜索数据。我们加载数据一次,可能会执行多次内部搜索,而无需再次获取数据。而且这个控件必须在不同的项目中使用。这就是为什么我希望它能够处理来自不同来源的数据。
-
@SergeyBerezovskiy 想象我正在使用 DataTables,然后我可以存储来自具有不同列类型和计数的不同表的结果。该解决方案适用于我的情况,但我想使用 LINQ,因为它更快、更容易使用,并且提供更简洁的代码,更易于维护和开发。
-
您仍然可以将所有查询移动到另一个组件并使其仅返回将显示在您的控件上的数据
-
@SergeyBerezovskiy 我希望控件像基本控件一样工作。与 DataGridView 的工作方式完全一样。它说给我来源,我会处理其余的。我希望我的控件接受不同的数据源(如 DataTable、List
等),只接受每个 LINQ 结果就足够了。对于每个 LINQ 结果,我的意思是来自不同表的结果,因此我不能声明特定类型。这就是为什么我希望它是通用的。
标签: c# linq generics linq-to-sql types