Лучшая практика для возврата IEnumerables из методов LINQ - PullRequest
0 голосов
/ 17 декабря 2008

OK

Возможно, на этот вопрос уже был дан ответ, но я не знаю, как произнести название.

У меня есть класс, в котором есть методы, которые возвращают много составных запросов LINQ. Большинство этих запросов формируют анонимные типы для получения нужных мне данных. Я обнаружил, что не могу вернуть анонимный тип из метода, поэтому я создавал подклассы и заполнял их в части запроса «выбрать новую».

Есть ли лучший способ сделать это? Все эти методы возвращают IEnumerable некоторого вида, и я действительно хочу сохранить вещи извлеченными.

Спасибо!

Ответы [ 2 ]

1 голос
/ 17 декабря 2008

Вы можете явно определить анонимные типы, которые вы используете в качестве классов, и вместо этого вернуть эти классы.

Как правило, если вы пишете библиотеку для других пользователей, лучше всего использовать явно определенные классы.

0 голосов
/ 17 декабря 2008

или вы можете использовать технику dp в этом сообщении

// Useful? probably not.
private void foo()
{
    var user = AnonCast(GetUserTuple(), new { Name = default(string), Badges = default(int) });
    Console.WriteLine("Name: {0} Badges: {1}", user.Name, user.Badges);
}

object GetUserTuple()
{
    return new { Name = "dp", Badges = 5 };
}    

// Using the magic of Type Inference...
static T AnonCast<T>(object obj, T type)
{
   return (T) obj;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...