能否使用Select将内容投影到匿名类型上呢?
以下是示例代码:
public interface ITest
{
string A{get;}
int B{get;}
}
string[] names = { "Tom", "Dick", "Harry", "Mary", "Jay" };
IQueryable<ITest> query =
from n in names.AsQueryable()
select new {A = n.ToUpper(), B = 2012};
上述代码会产生一个错误:
无法隐式将类型'System.Linq.IQueryable'转换为类型'System.Linq.IQueryable'
注意:如果我定义了一个实现ITest接口的Test类,然后使用以下方式进行投影,就可以使以上代码正常工作:
select new Test {A = n.ToUpper(), B = 2012};
为什么要这样做?我想看看是否可以仅定义接口而不必定义对象的具体实现,并让Linq为我创建对象。
IQueryable
的结果而不是IEnumerable
呢? - Arnaud F.