如何从方法返回匿名类型?
时间:2020-03-05 18:51:01 来源:igfitidea点击:
我有一个Linq查询,想从多个地方调用:
var myData = from a in db.MyTable where a.MyValue == "A" select new { a.Key, a.MyValue };
如何创建方法,将代码放入其中,然后调用它?
public ??? GetSomeData() { // my Linq query }
解决方案
回答
IQueryable
所以你的方法声明看起来像
public IQueryable GetSomeData()
回答
如果要返回,则需要输入类型。
代替var
,使用IEnumerable <>
声明并返回该变量。遍历它实际上执行查询。
回答
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 };
回答
通用方法应使我们具有智能感知能力:
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}; }