如何通过LINQ调用函数委托?

我想我在这里问正确的问题……

我有4个存储过程,它们返回相同数据的不同子集。

我将此数据映射到服务器应用程序中的同一对象。

我将代码设置如下:

internal static MyDataContext dc = new MyDataContext(); internal static List getData(DataType data) { List obj = null; switch (data) { case DataType.Type1: obj = mapObj(dc.getDataType1); break; case DateType.Type2: obj = mapObj(dc.getDataType2); break; ... } } // This gives me an error that type T cannot be defined // private static List mapObj(Func getDataForObj) // This gives me an error calling the function (Cannot find implementation of query pattern for source type T private static List mapObj(Func getDataForObj) { List obj = new List(); var result = from a in getDataForObj() select a; foreach (var row in result) { ... // map objs } return obj; } 

请参阅我关于我遇到的问题的方法声明的评论。 我怎样才能正确完成这个? 我的目标是不要多次复制/粘贴相同的代码…试图遵循DRY原则。 在此先感谢您的帮助。

使我的mapObj函数如下(按照@Jon Skeet在评论中的建议)允许它编译和运行:

 private static List mapObj(Func> getDataForObj) { List obj = new List(); var result = from a in getDataForObj() select a; foreach (var row in result) { ... // map objs } return obj; } 

这导致了关于字段映射的新问题,但我会在一个新问题中提出这个问题。