我在我的项目中使用linq到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但我无法查询它,因为它是一个接口。
我想在查询中存储来自不同表的结果,这样做的简单方法是什么?我认为泛型可以提供帮助,但我不知道如何。
答案 0 :(得分:3)
如果要保留查询,则需要一个IQueryable<T>
类型的字段,其中T是查询的对象类型。
如果你想保留查询结果(例如,你可以在RAM中搜索它而不再获取数据),你需要一些物化数据结构,如IList<T>
。
这两个选项都有问题,因为它们需要类型参数,而UserControls不能是通用的。我猜你可以使用IQueryable<object>
和IList<object>
,但是你将无法对结果对象做太多事情,因为控件对它们的类型一无所知。
顺便说一句,正如@SergeyBerezovskiy指出的那样,将数据访问和表示逻辑混合在一起可能也不是一个好主意。