13

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

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

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

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

4 回答 4

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
             };
于 2008-09-10T20:32:44.787 回答
8

IQueryable

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

public IQueryable GetSomeData()
于 2008-09-10T19:35:44.333 回答
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};
 }
于 2008-09-10T20:41:30.960 回答
2

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

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

于 2008-09-10T19:38:52.030 回答