linq返回IEnumerable< {Object,Object}>从一个功能

时间:2010-01-10 12:08:00

标签: c# linq

我希望在我的数据层中执行以下操作

public IEnumerable<{string,int}> ListIngredients()
        {
            return from i in RecipeIngredients select new {i.Ingredient.Name, i.Quantity};
        }
这显然不起作用。 c#只允许我返回IEnumerable,我希望公开结构。

2 个答案:

答案 0 :(得分:4)

您无法使用匿名类型执行此操作。你所追求的是.NET 4.0中的Tuple类型 - 你写的是:

public IEnumerable<Tuple<string,int>> ListIngredients()
{
    return RecipeIngredients.Select(i => Tuple.Create(i.Ingredient.Name,
                                                      i.Quantity));
}

如果你不能使用.NET 4.0,你可以相当容易地创建自己的等价物。

答案 1 :(得分:4)

我建议你创建一个RecipeIngredient类(如果你还没有),你可以通过IEnumerable&lt; RecipeIngredient&gt;形式从这个方法返回吗?

这将解决您的问题,同时也是有道理的。