存储Linq结果的合适类型,以便以后能够查询它

时间:2014-01-28 06:47:04

标签: c# linq generics linq-to-sql types

我在我的项目中使用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但我无法查询它,因为它是一个接口。

我想在查询中存储来自不同表的结果,这样做的简单方法是什么?我认为泛型可以提供帮助,但我不知道如何。

1 个答案:

答案 0 :(得分:3)

如果要保留查询,则需要一个IQueryable<T>类型的字段,其中T是查询的对象类型。

如果你想保留查询结果(例如,你可以在RAM中搜索它而不再获取数据),你需要一些物化数据结构,如IList<T>

这两个选项都有问题,因为它们需要类型参数,而UserControls不能是通用的。我猜你可以使用IQueryable<object>IList<object>,但是你将无法对结果对象做太多事情,因为控件对它们的类​​型一无所知。

顺便说一句,正如@SergeyBerezovskiy指出的那样,将数据访问和表示逻辑混合在一起可能也不是一个好主意。