如何将Anonymous类型对象发送到方法

时间:2010-12-23 10:31:42

标签: c# linq frameworks entity

我正在使用Linq使用Entity Framework查询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作为参数传递给另一个方法。请帮帮我怎么做?

3 个答案:

答案 0 :(得分:3)

你可以做的唯一类型方法是,如果另一种方法是通用的,你让泛型类型推断可以做到这一点:

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

当然,您也可以通过IListIEnumerableobjectdynamic传递,而无需任何类型信息

答案 1 :(得分:2)

你可能不应该这样做。如果没有类型信息,您的方法将无法(轻松)访问对象的属性。

改为使用具体的用户定义类型。如果您的对象非常短暂并且您不想创建新类型,则可以使用Tuple(需要.NET 4或更高版本)。

答案 2 :(得分:1)

您还可以使用C#动态关键字。当然,它反射慢,类型不安全。例如:

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