如何从方法返回匿名类型?

时间:2008-09-10 19:33:28

标签: c# linq data-structures parameter-passing

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

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

如何创建方法,将此代码放入其中,然后调用它?

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

4 个答案:

答案 0 :(得分:10)

IQueryable和IEnumerable都有效。但您想使用特定类型的版本,IQueryable < T >或IEnumerable < T >

因此,您需要创建一个类型来保存数据。

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

答案 1 :(得分:8)

IQueryable

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

public IQueryable GetSomeData()

答案 2 :(得分:3)

通用方法应该给你智能感知:

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};
 }

答案 3 :(得分:2)

如果您想返回,则需要一个类型。

而不是var,使用IEnumerable<>声明并返回该变量。迭代它实际上执行查询。