2008-09-10 83 views
12

我有我想從多個地方調用LINQ查詢:如何從方法返回匿名類型?

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

如何創建一個方法,把這個代碼,然後打電話嗎?

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

你爲什麼不回遣詞? – 2008-09-10 20:09:29

+1

這只是一個簡單的例子。我有更多的價值,我實際選擇,不適合字典 – ScottG 2008-09-10 20:28:37

+0

可能重複的[返回匿名類型?](http://stackoverflow.com/questions/534690/return-anonymous-type) – nawfal 2014-06-28 08:18:13

回答

9

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

IQueryable

所以,你的方法聲明看起來像

public IQueryable GetSomeData() 
2

如果你想返回,你需要一個類型。

而不是var,聲明使用IEnumerable<>並返回該變量。遍歷它實際上執行查詢。

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