我怎样才能从一个方法返回一个匿名types?

我有一个Linq查询,我想从多个地方调用:

var myData = from a in db.MyTable where a.MyValue == "A" select new { a.Key, a.MyValue }; 

我怎样才能创build一个方法,把这个代码放在里面,然后调用它呢?

 public ??? GetSomeData() { // my Linq query } 

IQueryable和IEnumerable都可以工作。 但是你想使用types特定的版本,IQueryable < T >或IEnumerable < T >

所以你要创build一个types来保存数据。

 var myData = from a in db.MyTable where a.MyValue == "A" select new MyType { Key = a.Key, Value = a.MyValue }; 

IQueryable

所以你的方法声明看起来像

 public IQueryable GetSomeData() 

一个通用的方法应该给你intellisense:

 public class MyType {Key{get;set;} Value{get;set}} public IQueryable<T> GetSomeData<T>() where T : MyType, new() { return from a in db.MyTable where a.MyValue == "A" select new T {Key=a.Key,Value=a.MyValue}; } 

如果你想返回,你需要一个types。

而不是var ,使用IEnumerable<>声明并返回该variables。 遍历它实际上执行查询。