linq to sql ExecuteQuery()为IQueryable

时间:2009-06-30 18:33:59

标签: linq linq-to-sql iqueryable

ExecuteQuery()方法返回一个IEnumerable但有没有办法让它返回IQueryable?

2 个答案:

答案 0 :(得分:9)

好吧,你可以打电话给AsQueryable,但它不会有任何好处。问题是,当您使用ExecuteQuery时,查询不是可组合的,因为LINQ to SQL不会“理解”它。

IQueryable<T>的核心目的之一是允许将查询的各个方面组合在一起,然后LINQ to SQL可以将它们转换为单个SQL查询。当查询的其中一个位实际上不透明时,这就不起作用。

答案 1 :(得分:1)

如果需要,可以将查询结果导出到列表中,然后将其转换为IQueryable。请参阅下一个示例代码:

public IQueryable<Data> GetData()
    string query = @"select ...";
    object[] parameters = new object[...]{...};
    var resultQuery = this.DataContext.ExecuteQuery<SICDB.Data>(query, parameters);
    var tempList = resultQuery .ToList();
    return tempList.AsQueryable();
}