2010-12-23 78 views
4

我使用LINQ使用實體框架如下查詢MySQL數據庫 -如何匿名類型對象發送到一個方法

var query = from c in subQuery 
      select new 
      { 
       Client = c.Client, 
       GlobalList = c.GlobalList, 
       Book = (from book in context.Books 
         where book.c_clt_id == c.Client.c_clt_id 
         select book) 
      }; 
var totalSearch = query.ToList(); 

現在我想通過totalSearch作爲參數傳遞給另一個方法。請幫助我如何做到這一點?

回答

1

您也可以使用C#動態關鍵字。當然,這是一個緩慢的反思和類型不安全。例如:

void SomeMethod(dynamic d) 
{ 
    Console.WriteLine(d.Client); 
    Console.WriteLine(d.GlobalList.Count); 
} 
3

唯一類型,你可以做到這一點方式是,如果其他方法是通用的,你讓泛型類型推斷做的工作:

void SomeOtherMethod<T>(List<T> list) {...} 
... 
SomeOtherMethod(totalSearch); 

你也可以通過它沒有任何類型的信息通過IListIEnumerable,objectdynamic,當然。

+0

當然,如果不使用反射,該方法將無法引用任何類型的屬性。 – Amnon 2010-12-23 10:41:34

+0

@Amnon非常真實 - 但這取決於這些方法想要做什麼。而一個常見的技巧是通過選擇器訪問成員... – 2010-12-23 10:44:00

2

你可能不應該那樣做。沒有類型信息,你的方法不會(很容易)能夠訪問對象的屬性。

改爲使用具體的用戶定義類型。如果您的對象非常短暫,並且您不想創建新類型,則可以使用Tuple(需要.NET 4或更高版本)。