从LINQ方法返回IEnumerables的最佳实践

时间:2008-12-16 22:00:39

标签: sql linq

行,

之前可能已经回答过这个问题,但我不确定如何说出标题。

我有一个类,它有返回许多复合LINQ查询的方法。大多数这些查询形成匿名类型以获取我需要的数据。我发现我无法从方法返回匿名类型,所以我一直在创建子类并在查询的“选择新”部分填充它们。

有更好的方法吗?所有这些方法都返回了某种类型的IEnumerable,我真的想要保留一些东西。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以明确地定义您作为类使用的匿名类型,而是返回这些类。

通常,如果您正在编写供其他人使用的库,则明确定义的类是最佳实践。

答案 1 :(得分:0)

或者您可以在此dp

中使用post的技巧
// 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;
}