Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将匿名类型对象发送到方法_C#_Linq_Frameworks_Entity - Fatal编程技术网

C# 如何将匿名类型对象发送到方法

C# 如何将匿名类型对象发送到方法,c#,linq,frameworks,entity,C#,Linq,Frameworks,Entity,我正在使用Linq使用实体框架查询MySQL数据库,如下所示- var query = from c in subQuery select new { Client = c.Client, GlobalList = c.GlobalList, Book = (from book in context.Books

我正在使用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作为一个参数传递给另一个方法。请帮助我如何做到这一点?

唯一可以做到这一点的类型化方法是,如果另一个方法是泛型的,您可以让泛型类型推断完成这项工作:

void SomeOtherMethod<T>(List<T> list) {...}
...
SomeOtherMethod(totalSearch);
void SomeOtherMethod(列表){…}
...
其他方法(totalSearch);

当然,您也可以通过
IList
IEnumerable
object
dynamic
传递它,而不需要任何类型信息。

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

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

也可以使用C#dynamic关键字。当然,这是一个缓慢的反射和类型不安全。例如:

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

当然,如果不使用反射,该方法将无法引用任何类型的属性。@Amnon非常正确-但这取决于该方法想要做什么。一个常见的技巧是传入选择器来访问成员…你能指导我在这种情况下如何编写选择器吗?@Harshal例如,将
Func
传递到方法中,并在列表中为每个对象调用它…你能指导我在这种情况下如何编写元组吗?