Как отправить объект типа Anonymous в метод - PullRequest
4 голосов
/ 23 декабря 2010

Я использую 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 ]

3 голосов
/ 23 декабря 2010

Единственный типизированный способ, которым вы можете сделать это, если другой метод является универсальным, и вы позволяете выводу универсального типа делать работу:

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

Вы также можете передать его без какой-либо информации типа через IList, IEnumerable, object или dynamic, конечно.

2 голосов
/ 23 декабря 2010

Вы, вероятно, не должны этого делать.Без информации о типе ваш метод не сможет (легко) получить доступ к свойствам объекта.

Вместо этого используйте конкретный определенный пользователем тип.Если ваш объект очень недолговечный и вы не хотите создавать новый тип, вы можете использовать Tuple (требуется .NET 4 или более поздняя версия).

1 голос
/ 23 декабря 2010

Вы также можете использовать динамическое ключевое слово C #. Конечно, это медленное отражение и тип небезопасно. Например:

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