2011-12-02 47 views

回答

2

几乎可以肯定将是更好的方式来解决这个问题,但回答你的问题问,你可以使用dynamic

private static IQueryable<T> GetInteriorElements<T> 
       (IQueryable<T> source, int skip, int take) 
{ 
    return source.Skip(skip).Take(take); 
} 

,并调用它为:

object DataSource = ... 

// The real question is: what are you now going to do with this? 
var pagedData = GetInteriorElements((dynamic)DataSource, 10, 20); 

如果你在.NET 3.5中,你将不得不使用反射,很遗憾。

1

它的时间来正确地定义一个类。匿名类型在创建它们的方法中完全独立时非常棒。当你演示需要在代码中的其他地方使用它们时,通过类定义记录类型,然后可以在需要它的任何地方使用该类,包括在演员表中。一旦创建了类定义,只需在需要的地方按名称引用类。

查询:

... 
select new ClassName // name the class 
{ 
    ... 
} 

方法的返回类型

public IQueryable<ClassName> GetData() 

而且投

var data = (IQueryable<ClassName>)theDataSource; 
相关问题